proj home

Files   Classes   Functions   Hierarchy  

cube.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <fstream>
00003 using namespace std;
00004 
00005 #include <cube.h>
00006 
00007 void cube::right()
00008 {
00009   // Adjusting for different coordinate system.
00010   uint k = cs.k;
00011   switch (k)
00012   {
00013     case 0: k=2; break;
00014     case 2: k=0; break;
00015   }
00016 
00017   right(k);
00018 }
00019 
00020 void cube::left()
00021 {
00022   // Adjusting for different coordinate system.
00023   uint k = cs.k;
00024   switch (k)
00025   {
00026     case 0: k=2; break;
00027     case 2: k=0; break;
00028   }
00029 
00030   left(k);
00031 }
00032 
00033 void cube::faceleft()
00034 {
00035   for (uint i=0; i<3; ++i)
00036     left(i);
00037 }
00038 
00039 void cube::faceright()
00040 {
00041   for (uint i=0; i<3; ++i)
00042     right(i);
00043 }
00044 
00045 void cube::faceup()
00046 {
00047   for (uint i=0; i<3; ++i)
00048     up(i);
00049 }
00050 
00051 void cube::facedown()
00052 {
00053   for (uint i=0; i<3; ++i)
00054     down(i);
00055 }
00056 
00057 
00058 
00059 ostream & cube::print(ostream & os) const
00060 {
00061   uint index = 0;
00062 
00063   for (uint i=0; i<6; ++i)
00064   {
00065     for (uint k=0; k<9; ++k)
00066     {
00067       os << (uint) (xi[index]) << " ";
00068       ++index;
00069     }
00070     os << endl;
00071   }
00072 
00073   return os;
00074 }
00075 
00076 istream & cube::read(istream & is)
00077 {
00078 
00079   uint index = 0;
00080 
00081   uint c;
00082 
00083   for (uint i=0; i<6; ++i)
00084   {
00085     for (uint k=0; k<9; ++k)
00086     {
00087       is >> c;
00088       xi[index] = (colordef)c;
00089       ++index;
00090     }
00091   }
00092 
00093   return is;
00094 }
00095 
00096 
00097 void cube::up(uintc i)
00098 {
00099   assert(i<3);
00100 
00101   uintc k0 = i;
00102   uintc k1 = k0+3;
00103   uintc k2 = k0+6;
00104 
00105   colordef a0 = access(5,k0);
00106   colordef a1 = access(5,k1);
00107   colordef a2 = access(5,k2);
00108 
00109   access(5,k0) = access(0,k0);
00110   access(5,k1) = access(0,k1);
00111   access(5,k2) = access(0,k2);
00112 
00113   access(0,k0) = access(4,k0);
00114   access(0,k1) = access(4,k1);
00115   access(0,k2) = access(4,k2);
00116 
00117   uint b0 = 8-i;
00118   uint b1 = 5-i;
00119   uint b2 = 2-i;
00120 
00121   access(4,k0) = access(2,b0);
00122   access(4,k1) = access(2,b1);
00123   access(4,k2) = access(2,b2);
00124 
00125   access(2,b0) = a0;
00126   access(2,b1) = a1;
00127   access(2,b2) = a2;
00128 }
00129 
00130 void cube::right(uintc i)
00131 {
00132   uintc k0 = 3*i;
00133   uintc k1 = k0+1;
00134   uintc k2 = k0+2;
00135 
00136   colordef a0 = access(1,k0);
00137   colordef a1 = access(1,k1);
00138   colordef a2 = access(1,k2);
00139 
00140   access(1,k0) = access(0,k0);
00141   access(1,k1) = access(0,k1);
00142   access(1,k2) = access(0,k2);
00143 
00144   access(0,k0) = access(3,k0);
00145   access(0,k1) = access(3,k1);
00146   access(0,k2) = access(3,k2);
00147 
00148   access(3,k0) = access(2,k0);
00149   access(3,k1) = access(2,k1);
00150   access(3,k2) = access(2,k2);
00151 
00152   access(2,k0) = a0;
00153   access(2,k1) = a1;
00154   access(2,k2) = a2;
00155 }
00156 
00157 // No need for efficiency.
00158 void cube::left(uintc i)
00159 {
00160   right(i);
00161   right(i);
00162   right(i);
00163 }
00164 
00165 void cube::down(uintc i)
00166 {
00167   up(i);
00168   up(i);
00169   up(i);
00170 }
00171 
00172 void cube::reset()
00173 {
00174   faceset(0,red);
00175   faceset(1,green);
00176   faceset(2,blue);
00177   faceset(3,yellow);
00178   faceset(4,white);
00179   faceset(5,orange);
00180 }
00181 
00182 void  cube::faceset( uintc i, colordef const c )
00183 {
00184   uint index = i*9;
00185 
00186   for (uint i=0; i<9; ++i)
00187     xi[index++] = c;
00188 }
00189 
00190 
00191 ostream & operator << (ostream & os, cube const & cb)
00192 { 
00193   return cb.print(os); 
00194 }
00195 
00196 cube::cube()
00197 {
00198   reset();
00199 }
00200 
00201 
00202 

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