Files Classes Functions Hierarchy
00001 #include <iostream> 00002 using namespace std; 00003 00004 00005 #include <commandline.h> 00006 #include <gobj.h> 00007 #include <graphmisc.h> 00008 #include <maze003.h> 00009 #include <mazedisp02.h> 00010 #include <mazematrixD2.h> 00011 #include <mazematrixD2createmaze.h> 00012 #include <zpr.h> 00013 00014 string maze003::doc[] = 00015 { 00016 "", 00017 "$ ./main prog=12 m=10 n=20 dx=0.15 backgroundcolor=0,255,0 wallcolor=0,25,255 randozize=0 id=1 origin=-1.4,-.5,0 - Display m by n maze." 00018 }; 00019 00020 void maze003::keyboard01 00021 ( 00022 unsigned char key, 00023 int x, 00024 int y 00025 ) 00026 { 00027 switch (key) 00028 { 00029 case 27: 00030 exit(0); 00031 break; 00032 } 00033 } 00034 00035 void maze003::display01() 00036 { 00037 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 00038 00039 gobj::global->draw(); 00040 00041 glerrordisplay(); 00042 00043 glutSwapBuffers(); 00044 } 00045 00046 00047 maze003::maze003(int argc, char** argv) 00048 : xGraphics(true) 00049 { 00050 glutInit(&argc,argv); 00051 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); 00052 glutInitWindowSize(800,600); 00053 glutCreateWindow(""); 00054 glutDisplayFunc(maze003::display01); 00055 glutKeyboardFunc(maze003::keyboard01); 00056 00057 OpenGLinitialisation(); 00058 00059 glEnable(GL_DEPTH_TEST); 00060 glEnable(GL_CULL_FACE); 00061 glEnable(GL_NORMALIZE); 00062 00063 xGraphics.set(); 00064 00065 00066 commandline cmd(argc,argv); 00067 00068 // Construct the maze. 00069 00070 uint m=8; 00071 uint n=12; 00072 cmd.mapvar(m,"m"); 00073 cmd.mapvar(n,"n"); 00074 00075 bool randomize=true; 00076 cmd.mapvar(randomize,"randomize"); 00077 if (randomize) 00078 srand( (unsigned)time( NULL ) ); 00079 00080 mazematrixD2<uint> mz(m,n); 00081 mazematrixD2createmaze<uint> mc(mz); 00082 mc.buildpropermaze(); 00083 00084 bool proper=true; 00085 cmd.mapvar(proper,"proper"); 00086 double deletewall=0.025; // 2.5% 00087 cmd.mapvar(deletewall,"deletewall"); 00088 if (proper==false) 00089 mc.impropermaze01(deletewall); 00090 00091 assert(mz.valid()); 00092 00093 00094 double dx=0.1; 00095 cmd.mapvar(dx,"dx"); 00096 00097 mazedisp02 md(dx,mz); 00098 00099 cmd.mapvar(md.pipes,"pipes"); 00100 graphmisc::colornormalize(md.pipecolor,cmd,"pipecolor"); 00101 00102 cmd.mapvar(md.displaycellid,"id"); 00103 00104 point2<double> origin(0.0,0.0); 00105 string originstr("(0,0)"); 00106 cmd.mapvar(originstr,"origin"); 00107 origin.serializeInverseBrackets(originstr); 00108 00109 point3<double> background; 00110 graphmisc::colornormalize(background,cmd,"backgroundcolor"); 00111 00112 cmd.mapvar(md.walls,"walls"); 00113 graphmisc::colornormalize(md.wallcolor,cmd,"wallcolor"); 00114 00115 gobjpush(new gobjglClearColor(background)); 00116 gobjpush(new gobjglClear(GL_COLOR_BUFFER_BIT)); 00117 00118 gobjpush(new gobjglPushMatrix()); 00119 gobjpush(new gobjglTranslated(origin.x,origin.y,0.0)); 00120 md.draw(); 00121 gobjpush(new gobjglPopMatrix()); 00122 } 00123 00124 00125 void maze003::eval() 00126 { 00127 zpr zz; 00128 00129 zz.update(); 00130 glutMainLoop(); 00131 } 00132
1.5.8