proj home

Files   Classes   Functions   Hierarchy  

maze003.cpp

Go to the documentation of this file.
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 

Generated on Fri Mar 4 00:49:28 2011 for Chelton Evans Source by  doxygen 1.5.8