Thomas Morris / Mbed OS PROJ324_Final

Fork of ELEC351_Group_T by Plymouth ELEC351 Group T

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ALGORITHM.cpp Source File

ALGORITHM.cpp

00001 #include "mbed.h"           //Include the mbed libraries
00002 #include "ALGORITHM.hpp"          //Include the header file, this acts like a series of forward declarations
00003 #include "SERIAL_COMMANDS.hpp"
00004 
00005 //Constructor
00006 ALGORITHM::ALGORITHM() //Constructor
00007 {
00008     _State = 0;
00009 }
00010 
00011 ALGORITHM::~ALGORITHM(){}   //Destructor
00012 
00013 void ALGORITHM::ALGORITHM_INIT()
00014 {
00015     _State = 0;
00016     /*
00017     Needs to know what colour all of the positions of the cube are in so that it can enact upon this data.
00018     
00019     */
00020 } 
00021 
00022 void ALGORITHM::Find_edges()//Sets the internal variable to the location of all the pieces and the positions of them
00023 {  
00024 //Reset the Pointer Values
00025     _White_Pointer_Edge  = 0;
00026     _Orange_Pointer_Edge = 0;
00027     _Blue_Pointer_Edge   = 0;
00028     _Red_Pointer_Edge    = 0;
00029     _Green_Pointer_Edge  = 0;
00030     _Yellow_Pointer_Edge = 0;
00031 //Reset the 
00032     
00033     _Find_edges_White();
00034     _Find_edges_Orange();
00035     _Find_edges_Blue();
00036     _Find_edges_Red();
00037     _Find_edges_Green();
00038     _Find_edges_Yellow();
00039 }   
00040 
00041 void ALGORITHM::Find_Corners()//Sets the internal variable to the location of all the pieces and the positions of them
00042 {  
00043 //Reset the Pointer Values
00044     _White_Pointer_Corner  = 0;
00045     _Orange_Pointer_Corner = 0;
00046     _Blue_Pointer_Corner   = 0;
00047     _Red_Pointer_Corner    = 0;
00048     _Green_Pointer_Corner  = 0;
00049     _Yellow_Pointer_Corner = 0;
00050 //Reset the 
00051     
00052     _Find_Corners_White();
00053     _Find_Corners_Orange();
00054     _Find_Corners_Blue();
00055     _Find_Corners_Red();
00056     _Find_Corners_Green();
00057     _Find_Corners_Yellow();
00058 }   
00059 void ALGORITHM::_Find_Corners_White()//Identify White edges
00060 {
00061     //Check White side 
00062     if(CubeMap[0][0][1] == White)
00063     {
00064      _White_List_Corner[_White_Pointer_Corner] =1;//Store this internal variable  
00065      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00066     }
00067     if(CubeMap[0][1][0] == White)
00068     {
00069      _White_List_Corner[_White_Pointer_Corner] =3;//Store this internal variable  
00070      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00071     }
00072     if(CubeMap[0][1][2] == White)
00073     {
00074      _White_List_Corner[_White_Pointer_Corner] =7;//Store this internal variable  
00075      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00076     }
00077     if(CubeMap[0][2][1] == White)
00078     {
00079      _White_List_Corner[_White_Pointer_Corner] =9;//Store this internal variable  
00080      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00081     }
00082     //Check Orange side
00083     if(CubeMap[1][0][1] == White)
00084     {
00085      _White_List_Corner[_White_Pointer_Corner] =1;//Store this internal variable  
00086      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00087     }
00088     if(CubeMap[1][1][0] == White)
00089     {
00090      _White_List_Corner[_White_Pointer_Corner] =3;//Store this internal variable  
00091      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00092     }
00093     if(CubeMap[1][1][2] == White)
00094     {
00095      _White_List_Corner[_White_Pointer_Corner] =7;//Store this internal variable  
00096      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00097     }
00098     if(CubeMap[1][2][1] == White)
00099     {
00100      _White_List_Corner[_White_Pointer_Corner] =9;//Store this internal variable  
00101      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00102     }
00103     //Check Blue side
00104     if(CubeMap[2][0][1] == White)
00105     {
00106      _White_List_Corner[_White_Pointer_Corner] =1;//Store this internal variable  
00107      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00108     }
00109     if(CubeMap[2][1][0] == White)
00110     {
00111      _White_List_Corner[_White_Pointer_Corner] =3;//Store this internal variable  
00112      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00113     }
00114     if(CubeMap[2][1][2] == White)
00115     {
00116      _White_List_Corner[_White_Pointer_Corner] =7;//Store this internal variable  
00117      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00118     }
00119     if(CubeMap[2][2][1] == White)
00120     {
00121      _White_List_Corner[_White_Pointer_Corner] =9;//Store this internal variable  
00122      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00123     }
00124     //Check Red side
00125     if(CubeMap[3][0][1] == White)
00126     {
00127      _White_List_Corner[_White_Pointer_Corner] =1;//Store this internal variable  
00128      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00129     }
00130     if(CubeMap[3][1][0] == White)
00131     {
00132      _White_List_Corner[_White_Pointer_Corner] =3;//Store this internal variable  
00133      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00134     }
00135     if(CubeMap[3][1][2] == White)
00136     {
00137      _White_List_Corner[_White_Pointer_Corner] =7;//Store this internal variable  
00138      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00139     }
00140     if(CubeMap[3][2][1] == White)
00141     {
00142      _White_List_Corner[_White_Pointer_Corner] =9;//Store this internal variable  
00143      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00144     }
00145     //Check Green side
00146     if(CubeMap[4][0][1] == White)
00147     {
00148      _White_List_Corner[_White_Pointer_Corner] =1;//Store this internal variable  
00149      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00150     }
00151     if(CubeMap[4][1][0] == White)
00152     {
00153      _White_List_Corner[_White_Pointer_Corner] =3;//Store this internal variable  
00154      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00155     }
00156     if(CubeMap[4][1][2] == White)
00157     {
00158      _White_List_Corner[_White_Pointer_Corner] =7;//Store this internal variable  
00159      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00160     }
00161     if(CubeMap[4][2][1] == White)
00162     {
00163      _White_List_Corner[_White_Pointer_Corner] =9;//Store this internal variable  
00164      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00165     }
00166     //Check Yellow side
00167     if(CubeMap[5][0][1] == White)
00168     {
00169      _White_List_Corner[_White_Pointer_Corner] =1;//Store this internal variable  
00170      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00171     }
00172     if(CubeMap[5][1][0] == White)
00173     {
00174      _White_List_Corner[_White_Pointer_Corner] =3;//Store this internal variable  
00175      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00176     }
00177     if(CubeMap[5][1][2] == White)
00178     {
00179      _White_List_Corner[_White_Pointer_Corner] =7;//Store this internal variable  
00180      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00181     }
00182     if(CubeMap[5][2][1] == White)
00183     {
00184      _White_List_Corner[_White_Pointer_Corner] =9;//Store this internal variable  
00185      _White_Pointer_Corner = _White_Pointer_Corner + 1; 
00186     }
00187 }
00188 
00189 
00190 void ALGORITHM::_Find_Corners_Orange()//Identify Orange edges
00191 {
00192     //Check White side 
00193     if(CubeMap[0][0][1] == Orange)
00194     {
00195      _Orange_List_Corner[_Orange_Pointer_Corner] =1;//Store this internal variable  
00196      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00197     }
00198     if(CubeMap[0][1][0] == Orange)
00199     {
00200      _Orange_List_Corner[_Orange_Pointer_Corner] =3;//Store this internal variable  
00201      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00202     }
00203     if(CubeMap[0][1][2] == Orange)
00204     {
00205      _Orange_List_Corner[_Orange_Pointer_Corner] =7;//Store this internal variable  
00206      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00207     }
00208     if(CubeMap[0][2][1] == Orange)
00209     {
00210      _Orange_List_Corner[_Orange_Pointer_Corner] =9;//Store this internal variable  
00211      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00212     }
00213     //Check Orange side
00214     if(CubeMap[1][0][1] == Orange)
00215     {
00216      _Orange_List_Corner[_Orange_Pointer_Corner] =1;//Store this internal variable  
00217      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00218     }
00219     if(CubeMap[1][1][0] == Orange)
00220     {
00221      _Orange_List_Corner[_Orange_Pointer_Corner] =3;//Store this internal variable  
00222      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00223     }
00224     if(CubeMap[1][1][2] == Orange)
00225     {
00226      _Orange_List_Corner[_Orange_Pointer_Corner] =7;//Store this internal variable  
00227      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00228     }
00229     if(CubeMap[1][2][1] == Orange)
00230     {
00231      _Orange_List_Corner[_Orange_Pointer_Corner] =9;//Store this internal variable  
00232      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00233     }
00234     //Check Blue side
00235     if(CubeMap[2][0][1] == Orange)
00236     {
00237      _Orange_List_Corner[_Orange_Pointer_Corner] =1;//Store this internal variable  
00238      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00239     }
00240     if(CubeMap[2][1][0] == Orange)
00241     {
00242      _Orange_List_Corner[_Orange_Pointer_Corner] =3;//Store this internal variable  
00243      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00244     }
00245     if(CubeMap[2][1][2] == Orange)
00246     {
00247      _Orange_List_Corner[_Orange_Pointer_Corner] =7;//Store this internal variable  
00248      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00249     }
00250     if(CubeMap[2][2][1] == Orange)
00251     {
00252      _Orange_List_Corner[_Orange_Pointer_Corner] =9;//Store this internal variable  
00253      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00254     }
00255     //Check Red side
00256     if(CubeMap[3][0][1] == Orange)
00257     {
00258      _Orange_List_Corner[_Orange_Pointer_Corner] =1;//Store this internal variable  
00259      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00260     }
00261     if(CubeMap[3][1][0] == Orange)
00262     {
00263      _Orange_List_Corner[_Orange_Pointer_Corner] =3;//Store this internal variable  
00264      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00265     }
00266     if(CubeMap[3][1][2] == Orange)
00267     {
00268      _Orange_List_Corner[_Orange_Pointer_Corner] =7;//Store this internal variable  
00269      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00270     }
00271     if(CubeMap[3][2][1] == Orange)
00272     {
00273      _Orange_List_Corner[_Orange_Pointer_Corner] =9;//Store this internal variable  
00274      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00275     }
00276     //Check Green side
00277     if(CubeMap[4][0][1] == Orange)
00278     {
00279      _Orange_List_Corner[_Orange_Pointer_Corner] =1;//Store this internal variable  
00280      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00281     }
00282     if(CubeMap[4][1][0] == Orange)
00283     {
00284      _Orange_List_Corner[_Orange_Pointer_Corner] =3;//Store this internal variable  
00285      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00286     }
00287     if(CubeMap[4][1][2] == Orange)
00288     {
00289      _Orange_List_Corner[_Orange_Pointer_Corner] =7;//Store this internal variable  
00290      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00291     }
00292     if(CubeMap[4][2][1] == Orange)
00293     {
00294      _Orange_List_Corner[_Orange_Pointer_Corner] =9;//Store this internal variable  
00295      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00296     }
00297     //Check Yellow side
00298     if(CubeMap[5][0][1] == Orange)
00299     {
00300      _Orange_List_Corner[_Orange_Pointer_Corner] =1;//Store this internal variable  
00301      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00302     }
00303     if(CubeMap[5][1][0] == Orange)
00304     {
00305      _Orange_List_Corner[_Orange_Pointer_Corner] =3;//Store this internal variable  
00306      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00307     }
00308     if(CubeMap[5][1][2] == Orange)
00309     {
00310      _Orange_List_Corner[_Orange_Pointer_Corner] =7;//Store this internal variable  
00311      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00312     }
00313     if(CubeMap[5][2][1] == Orange)
00314     {
00315      _Orange_List_Corner[_Orange_Pointer_Corner] =9;//Store this internal variable  
00316      _Orange_Pointer_Corner = _Orange_Pointer_Corner + 1; 
00317     }
00318 }
00319 void ALGORITHM::_Find_Corners_Blue()//Identify White edges
00320 {
00321     //Check White side 
00322     if(CubeMap[0][0][1] == Blue)
00323     {
00324      _Blue_List_Corner[_Blue_Pointer_Corner] =1;//Store this internal variable  
00325      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00326     }
00327     if(CubeMap[0][1][0] == Blue)
00328     {
00329      _Blue_List_Corner[_Blue_Pointer_Corner] =3;//Store this internal variable  
00330      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00331     }
00332     if(CubeMap[0][1][2] == Blue)
00333     {
00334      _Blue_List_Corner[_Blue_Pointer_Corner] =7;//Store this internal variable  
00335      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00336     }
00337     if(CubeMap[0][2][1] == Blue)
00338     {
00339      _Blue_List_Corner[_Blue_Pointer_Corner] =9;//Store this internal variable  
00340      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00341     }
00342     //Check Orange side
00343     if(CubeMap[1][0][1] == Blue)
00344     {
00345      _Blue_List_Corner[_Blue_Pointer_Corner] =1;//Store this internal variable  
00346      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00347     }
00348     if(CubeMap[1][1][0] == Blue)
00349     {
00350      _Blue_List_Corner[_Blue_Pointer_Corner] =3;//Store this internal variable  
00351      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00352     }
00353     if(CubeMap[1][1][2] == Blue)
00354     {
00355      _Blue_List_Corner[_Blue_Pointer_Corner] =7;//Store this internal variable  
00356      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00357     }
00358     if(CubeMap[1][2][1] == Blue)
00359     {
00360      _Blue_List_Corner[_Blue_Pointer_Corner] =9;//Store this internal variable  
00361      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00362     }
00363     //Check Blue side
00364     if(CubeMap[2][0][1] == Blue)
00365     {
00366      _Blue_List_Corner[_Blue_Pointer_Corner] =1;//Store this internal variable  
00367      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00368     }
00369     if(CubeMap[2][1][0] == Blue)
00370     {
00371      _Blue_List_Corner[_Blue_Pointer_Corner] =3;//Store this internal variable  
00372      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00373     }
00374     if(CubeMap[2][1][2] == Blue)
00375     {
00376      _Blue_List_Corner[_Blue_Pointer_Corner] =7;//Store this internal variable  
00377      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00378     }
00379     if(CubeMap[2][2][1] == Blue)
00380     {
00381      _Blue_List_Corner[_Blue_Pointer_Corner] =9;//Store this internal variable  
00382      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00383     }
00384     //Check Red side
00385     if(CubeMap[3][0][1] == Blue)
00386     {
00387      _Blue_List_Corner[_Blue_Pointer_Corner] =1;//Store this internal variable  
00388      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00389     }
00390     if(CubeMap[3][1][0] == Blue)
00391     {
00392      _Blue_List_Corner[_Blue_Pointer_Corner] =3;//Store this internal variable  
00393      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00394     }
00395     if(CubeMap[3][1][2] == Blue)
00396     {
00397      _Blue_List_Corner[_Blue_Pointer_Corner] =7;//Store this internal variable  
00398      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00399     }
00400     if(CubeMap[3][2][1] == Blue)
00401     {
00402      _Blue_List_Corner[_Blue_Pointer_Corner] =9;//Store this internal variable  
00403      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00404     }
00405     //Check Green side
00406     if(CubeMap[4][0][1] == Blue)
00407     {
00408      _Blue_List_Corner[_Blue_Pointer_Corner] =1;//Store this internal variable  
00409      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00410     }
00411     if(CubeMap[4][1][0] == Blue)
00412     {
00413      _Blue_List_Corner[_Blue_Pointer_Corner] =3;//Store this internal variable  
00414      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00415     }
00416     if(CubeMap[4][1][2] == Blue)
00417     {
00418      _Blue_List_Corner[_Blue_Pointer_Corner] =7;//Store this internal variable  
00419      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00420     }
00421     if(CubeMap[4][2][1] == Blue)
00422     {
00423      _Blue_List_Corner[_Blue_Pointer_Corner] =9;//Store this internal variable  
00424      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00425     }
00426     //Check Yellow side
00427     if(CubeMap[5][0][1] == Blue)
00428     {
00429      _Blue_List_Corner[_Blue_Pointer_Corner] =1;//Store this internal variable  
00430      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00431     }
00432     if(CubeMap[5][1][0] == Blue)
00433     {
00434      _Blue_List_Corner[_Blue_Pointer_Corner] =3;//Store this internal variable  
00435      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00436     }
00437     if(CubeMap[5][1][2] == Blue)
00438     {
00439      _Blue_List_Corner[_Blue_Pointer_Corner] =7;//Store this internal variable  
00440      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00441     }
00442     if(CubeMap[5][2][1] == Blue)
00443     {
00444      _Blue_List_Corner[_Blue_Pointer_Corner] =9;//Store this internal variable  
00445      _Blue_Pointer_Corner = _Blue_Pointer_Corner + 1; 
00446     }
00447 }
00448 void ALGORITHM::_Find_Corners_Red()//Identify Red edges
00449 {
00450     //Check White side 
00451     if(CubeMap[0][0][1] == Red)
00452     {
00453      _Red_List_Corner[_Red_Pointer_Corner] =1;//Store this internal variable  
00454      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00455     }
00456     if(CubeMap[0][1][0] == Red)
00457     {
00458      _Red_List_Corner[_Red_Pointer_Corner] =3;//Store this internal variable  
00459      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00460     }
00461     if(CubeMap[0][1][2] == Red)
00462     {
00463      _Red_List_Corner[_Red_Pointer_Corner] =7;//Store this internal variable  
00464      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00465     }
00466     if(CubeMap[0][2][1] == Red)
00467     {
00468      _Red_List_Corner[_Red_Pointer_Corner] =9;//Store this internal variable  
00469      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00470     }
00471     //Check Orange side
00472     if(CubeMap[1][0][1] == Red)
00473     {
00474      _Red_List_Corner[_Red_Pointer_Corner] =1;//Store this internal variable  
00475      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00476     }
00477     if(CubeMap[1][1][0] == Red)
00478     {
00479      _Red_List_Corner[_Red_Pointer_Corner] =3;//Store this internal variable  
00480      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00481     }
00482     if(CubeMap[1][1][2] == Red)
00483     {
00484      _Red_List_Corner[_Red_Pointer_Corner] =7;//Store this internal variable  
00485      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00486     }
00487     if(CubeMap[1][2][1] == Red)
00488     {
00489      _Red_List_Corner[_Red_Pointer_Corner] =9;//Store this internal variable  
00490      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00491     }
00492     //Check Blue side
00493     if(CubeMap[2][0][1] == Red)
00494     {
00495      _Red_List_Corner[_Red_Pointer_Corner] =1;//Store this internal variable  
00496      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00497     }
00498     if(CubeMap[2][1][0] == Red)
00499     {
00500      _Red_List_Corner[_Red_Pointer_Corner] =3;//Store this internal variable  
00501      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00502     }
00503     if(CubeMap[2][1][2] == Red)
00504     {
00505      _Red_List_Corner[_Red_Pointer_Corner] =7;//Store this internal variable  
00506      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00507     }
00508     if(CubeMap[2][2][1] == Red)
00509     {
00510      _Red_List_Corner[_Red_Pointer_Corner] =9;//Store this internal variable  
00511      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00512     }
00513     //Check Red side
00514     if(CubeMap[3][0][1] == Red)
00515     {
00516      _Red_List_Corner[_Red_Pointer_Corner] =1;//Store this internal variable  
00517      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00518     }
00519     if(CubeMap[3][1][0] == Red)
00520     {
00521      _Red_List_Corner[_Red_Pointer_Corner] =3;//Store this internal variable  
00522      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00523     }
00524     if(CubeMap[3][1][2] == Red)
00525     {
00526      _Red_List_Corner[_Red_Pointer_Corner] =7;//Store this internal variable  
00527      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00528     }
00529     if(CubeMap[3][2][1] == Red)
00530     {
00531      _Red_List_Corner[_Red_Pointer_Corner] =9;//Store this internal variable  
00532      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00533     }
00534     //Check Green side
00535     if(CubeMap[4][0][1] == Red)
00536     {
00537      _Red_List_Corner[_Red_Pointer_Corner] =1;//Store this internal variable  
00538      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00539     }
00540     if(CubeMap[4][1][0] == Red)
00541     {
00542      _Red_List_Corner[_Red_Pointer_Corner] =3;//Store this internal variable  
00543      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00544     }
00545     if(CubeMap[4][1][2] == Red)
00546     {
00547      _Red_List_Corner[_Red_Pointer_Corner] =7;//Store this internal variable  
00548      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00549     }
00550     if(CubeMap[4][2][1] == Red)
00551     {
00552      _Red_List_Corner[_Red_Pointer_Corner] =9;//Store this internal variable  
00553      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00554     }
00555     //Check Yellow side
00556     if(CubeMap[5][0][1] == Red)
00557     {
00558      _Red_List_Corner[_Red_Pointer_Corner] =1;//Store this internal variable  
00559      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00560     }
00561     if(CubeMap[5][1][0] == Red)
00562     {
00563      _Red_List_Corner[_Red_Pointer_Corner] =3;//Store this internal variable  
00564      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00565     }
00566     if(CubeMap[5][1][2] == Red)
00567     {
00568      _Red_List_Corner[_Red_Pointer_Corner] =7;//Store this internal variable  
00569      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00570     }
00571     if(CubeMap[5][2][1] == Red)
00572     {
00573      _Red_List_Corner[_Red_Pointer_Corner] =9;//Store this internal variable  
00574      _Red_Pointer_Corner = _Red_Pointer_Corner + 1; 
00575     }
00576 }
00577 void ALGORITHM::_Find_Corners_Green()//Identify Green edges
00578 {
00579     //Check White side 
00580     if(CubeMap[0][0][1] == Green)
00581     {
00582      _Green_List_Corner[_Green_Pointer_Corner] =1;//Store this internal variable  
00583      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00584     }
00585     if(CubeMap[0][1][0] == Green)
00586     {
00587      _Green_List_Corner[_Green_Pointer_Corner] =3;//Store this internal variable  
00588      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00589     }
00590     if(CubeMap[0][1][2] == Green)
00591     {
00592      _Green_List_Corner[_Green_Pointer_Corner] =7;//Store this internal variable  
00593      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00594     }
00595     if(CubeMap[0][2][1] == Green)
00596     {
00597      _Green_List_Corner[_Green_Pointer_Corner] =9;//Store this internal variable  
00598      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00599     }
00600     //Check Orange side
00601     if(CubeMap[1][0][1] == Green)
00602     {
00603      _Green_List_Corner[_Green_Pointer_Corner] =1;//Store this internal variable  
00604      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00605     }
00606     if(CubeMap[1][1][0] == Green)
00607     {
00608      _Green_List_Corner[_Green_Pointer_Corner] =3;//Store this internal variable  
00609      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00610     }
00611     if(CubeMap[1][1][2] == Green)
00612     {
00613      _Green_List_Corner[_Green_Pointer_Corner] =7;//Store this internal variable  
00614      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00615     }
00616     if(CubeMap[1][2][1] == Green)
00617     {
00618      _Green_List_Corner[_Green_Pointer_Corner] =9;//Store this internal variable  
00619      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00620     }
00621     //Check Blue side
00622     if(CubeMap[2][0][1] == Green)
00623     {
00624      _Green_List_Corner[_Green_Pointer_Corner] =1;//Store this internal variable  
00625      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00626     }
00627     if(CubeMap[2][1][0] == Green)
00628     {
00629      _Green_List_Corner[_Green_Pointer_Corner] =3;//Store this internal variable  
00630      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00631     }
00632     if(CubeMap[2][1][2] == Green)
00633     {
00634      _Green_List_Corner[_Green_Pointer_Corner] =7;//Store this internal variable  
00635      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00636     }
00637     if(CubeMap[2][2][1] == Green)
00638     {
00639      _Green_List_Corner[_Green_Pointer_Corner] =9;//Store this internal variable  
00640      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00641     }
00642     //Check Red side
00643     if(CubeMap[3][0][1] == Green)
00644     {
00645      _Green_List_Corner[_Green_Pointer_Corner] =1;//Store this internal variable  
00646      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00647     }
00648     if(CubeMap[3][1][0] == Green)
00649     {
00650      _Green_List_Corner[_Green_Pointer_Corner] =3;//Store this internal variable  
00651      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00652     }
00653     if(CubeMap[3][1][2] == Green)
00654     {
00655      _Green_List_Corner[_Green_Pointer_Corner] =7;//Store this internal variable  
00656      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00657     }
00658     if(CubeMap[3][2][1] == Green)
00659     {
00660      _Green_List_Corner[_Green_Pointer_Corner] =9;//Store this internal variable  
00661      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00662     }
00663     //Check Green side
00664     if(CubeMap[4][0][1] == Green)
00665     {
00666      _Green_List_Corner[_Green_Pointer_Corner] =1;//Store this internal variable  
00667      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00668     }
00669     if(CubeMap[4][1][0] == Green)
00670     {
00671      _Green_List_Corner[_Green_Pointer_Corner] =3;//Store this internal variable  
00672      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00673     }
00674     if(CubeMap[4][1][2] == Green)
00675     {
00676      _Green_List_Corner[_Green_Pointer_Corner] =7;//Store this internal variable  
00677      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00678     }
00679     if(CubeMap[4][2][1] == Green)
00680     {
00681      _Green_List_Corner[_Green_Pointer_Corner] =9;//Store this internal variable  
00682      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00683     }
00684     //Check Yellow side
00685     if(CubeMap[5][0][1] == Green)
00686     {
00687      _Green_List_Corner[_Green_Pointer_Corner] =1;//Store this internal variable  
00688      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00689     }
00690     if(CubeMap[5][1][0] == Green)
00691     {
00692      _Green_List_Corner[_Green_Pointer_Corner] =3;//Store this internal variable  
00693      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00694     }
00695     if(CubeMap[5][1][2] == Green)
00696     {
00697      _Green_List_Corner[_Green_Pointer_Corner] =7;//Store this internal variable  
00698      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00699     }
00700     if(CubeMap[5][2][1] == Green)
00701     {
00702      _Green_List_Corner[_Green_Pointer_Corner] =9;//Store this internal variable  
00703      _Green_Pointer_Corner = _Green_Pointer_Corner + 1; 
00704     }
00705 }
00706 void ALGORITHM::_Find_Corners_Yellow()//Identify Yellow edges
00707 {
00708     //Check White side 
00709     if(CubeMap[0][0][1] == Yellow)
00710     {
00711      _Yellow_List_Corner[_Yellow_Pointer_Corner] =1;//Store this internal variable  
00712      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00713     }
00714     if(CubeMap[0][1][0] == Yellow)
00715     {
00716      _Yellow_List_Corner[_Yellow_Pointer_Corner] =3;//Store this internal variable  
00717      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00718     }
00719     if(CubeMap[0][1][2] == Yellow)
00720     {
00721      _Yellow_List_Corner[_Yellow_Pointer_Corner] =7;//Store this internal variable  
00722      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00723     }
00724     if(CubeMap[0][2][1] == Yellow)
00725     {
00726      _Yellow_List_Corner[_Yellow_Pointer_Corner] =9;//Store this internal variable  
00727      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00728     }
00729     //Check Orange side
00730     if(CubeMap[1][0][1] == Yellow)
00731     {
00732      _Yellow_List_Corner[_Yellow_Pointer_Corner] =1;//Store this internal variable  
00733      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00734     }
00735     if(CubeMap[1][1][0] == Yellow)
00736     {
00737      _Yellow_List_Corner[_Yellow_Pointer_Corner] =3;//Store this internal variable  
00738      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00739     }
00740     if(CubeMap[1][1][2] == Yellow)
00741     {
00742      _Yellow_List_Corner[_Yellow_Pointer_Corner] =7;//Store this internal variable  
00743      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00744     }
00745     if(CubeMap[1][2][1] == Yellow)
00746     {
00747      _Yellow_List_Corner[_Yellow_Pointer_Corner] =9;//Store this internal variable  
00748      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00749     }
00750     //Check Blue side
00751     if(CubeMap[2][0][1] == Yellow)
00752     {
00753      _Yellow_List_Corner[_Yellow_Pointer_Corner] =1;//Store this internal variable  
00754      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00755     }
00756     if(CubeMap[2][1][0] == Yellow)
00757     {
00758      _Yellow_List_Corner[_Yellow_Pointer_Corner] =3;//Store this internal variable  
00759      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00760     }
00761     if(CubeMap[2][1][2] == Yellow)
00762     {
00763      _Yellow_List_Corner[_Yellow_Pointer_Corner] =7;//Store this internal variable  
00764      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00765     }
00766     if(CubeMap[2][2][1] == Yellow)
00767     {
00768      _Yellow_List_Corner[_Yellow_Pointer_Corner] =9;//Store this internal variable  
00769      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00770     }
00771     //Check Red side
00772     if(CubeMap[3][0][1] == Yellow)
00773     {
00774      _Yellow_List_Corner[_Yellow_Pointer_Corner] =1;//Store this internal variable  
00775      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00776     }
00777     if(CubeMap[3][1][0] == Yellow)
00778     {
00779      _Yellow_List_Corner[_Yellow_Pointer_Corner] =3;//Store this internal variable  
00780      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00781     }
00782     if(CubeMap[3][1][2] == Yellow)
00783     {
00784      _Yellow_List_Corner[_Yellow_Pointer_Corner] =7;//Store this internal variable  
00785      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00786     }
00787     if(CubeMap[3][2][1] == Yellow)
00788     {
00789      _Yellow_List_Corner[_Yellow_Pointer_Corner] =9;//Store this internal variable  
00790      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00791     }
00792     //Check Green side
00793     if(CubeMap[4][0][1] == Yellow)
00794     {
00795      _Yellow_List_Corner[_Yellow_Pointer_Corner] =1;//Store this internal variable  
00796      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00797     }
00798     if(CubeMap[4][1][0] == Yellow)
00799     {
00800      _Yellow_List_Corner[_Yellow_Pointer_Corner] =3;//Store this internal variable  
00801      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00802     }
00803     if(CubeMap[4][1][2] == Yellow)
00804     {
00805      _Yellow_List_Corner[_Yellow_Pointer_Corner] =7;//Store this internal variable  
00806      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00807     }
00808     if(CubeMap[4][2][1] == Yellow)
00809     {
00810      _Yellow_List_Corner[_Yellow_Pointer_Corner] =9;//Store this internal variable  
00811      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00812     }
00813     //Check Yellow side
00814     if(CubeMap[5][0][1] == Yellow)
00815     {
00816      _Yellow_List_Corner[_Yellow_Pointer_Corner] =1;//Store this internal variable  
00817      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00818     }
00819     if(CubeMap[5][1][0] == Yellow)
00820     {
00821      _Yellow_List_Corner[_Yellow_Pointer_Corner] =3;//Store this internal variable  
00822      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00823     }
00824     if(CubeMap[5][1][2] == Yellow)
00825     {
00826      _Yellow_List_Corner[_Yellow_Pointer_Corner] =7;//Store this internal variable  
00827      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00828     }
00829     if(CubeMap[5][2][1] == Yellow)
00830     {
00831      _Yellow_List_Corner[_Yellow_Pointer_Corner] =9;//Store this internal variable  
00832      _Yellow_Pointer_Corner = _Yellow_Pointer_Corner + 1; 
00833     }
00834 }      
00835 
00836 void ALGORITHM::_Find_edges_White()//Identify White edges
00837 {
00838     //Check White side 
00839     if(CubeMap[0][0][1] == White)
00840     {
00841      _White_List_Edge[_White_Pointer_Edge] = 2;//Store this internal variable  
00842      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00843     }
00844     if(CubeMap[0][1][0] == White)
00845     {
00846      _White_List_Edge[_White_Pointer_Edge] = 4;//Store this internal variable  
00847      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00848     }
00849     if(CubeMap[0][1][2] == White)
00850     {
00851      _White_List_Edge[_White_Pointer_Edge] = 6;//Store this internal variable  
00852      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00853     }
00854     if(CubeMap[0][2][1] == White)
00855     {
00856      _White_List_Edge[_White_Pointer_Edge] = 8;//Store this internal variable  
00857      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00858     }
00859     //Check Orange side
00860     if(CubeMap[1][0][1] == White)
00861     {
00862      _White_List_Edge[_White_Pointer_Edge] = 2;//Store this internal variable  
00863      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00864     }
00865     if(CubeMap[1][1][0] == White)
00866     {
00867      _White_List_Edge[_White_Pointer_Edge] = 4;//Store this internal variable  
00868      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00869     }
00870     if(CubeMap[1][1][2] == White)
00871     {
00872      _White_List_Edge[_White_Pointer_Edge] = 6;//Store this internal variable  
00873      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00874     }
00875     if(CubeMap[1][2][1] == White)
00876     {
00877      _White_List_Edge[_White_Pointer_Edge] = 8;//Store this internal variable  
00878      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00879     }
00880     //Check Blue side
00881     if(CubeMap[2][0][1] == White)
00882     {
00883      _White_List_Edge[_White_Pointer_Edge] = 2;//Store this internal variable  
00884      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00885     }
00886     if(CubeMap[2][1][0] == White)
00887     {
00888      _White_List_Edge[_White_Pointer_Edge] = 4;//Store this internal variable  
00889      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00890     }
00891     if(CubeMap[2][1][2] == White)
00892     {
00893      _White_List_Edge[_White_Pointer_Edge] = 6;//Store this internal variable  
00894      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00895     }
00896     if(CubeMap[2][2][1] == White)
00897     {
00898      _White_List_Edge[_White_Pointer_Edge] = 8;//Store this internal variable  
00899      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00900     }
00901     //Check Red side
00902     if(CubeMap[3][0][1] == White)
00903     {
00904      _White_List_Edge[_White_Pointer_Edge] = 2;//Store this internal variable  
00905      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00906     }
00907     if(CubeMap[3][1][0] == White)
00908     {
00909      _White_List_Edge[_White_Pointer_Edge] = 4;//Store this internal variable  
00910      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00911     }
00912     if(CubeMap[3][1][2] == White)
00913     {
00914      _White_List_Edge[_White_Pointer_Edge] = 6;//Store this internal variable  
00915      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00916     }
00917     if(CubeMap[3][2][1] == White)
00918     {
00919      _White_List_Edge[_White_Pointer_Edge] = 8;//Store this internal variable  
00920      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00921     }
00922     //Check Green side
00923     if(CubeMap[4][0][1] == White)
00924     {
00925      _White_List_Edge[_White_Pointer_Edge] = 2;//Store this internal variable  
00926      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00927     }
00928     if(CubeMap[4][1][0] == White)
00929     {
00930      _White_List_Edge[_White_Pointer_Edge] = 4;//Store this internal variable  
00931      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00932     }
00933     if(CubeMap[4][1][2] == White)
00934     {
00935      _White_List_Edge[_White_Pointer_Edge] = 6;//Store this internal variable  
00936      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00937     }
00938     if(CubeMap[4][2][1] == White)
00939     {
00940      _White_List_Edge[_White_Pointer_Edge] = 8;//Store this internal variable  
00941      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00942     }
00943     //Check Yellow side
00944     if(CubeMap[5][0][1] == White)
00945     {
00946      _White_List_Edge[_White_Pointer_Edge] = 2;//Store this internal variable  
00947      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00948     }
00949     if(CubeMap[5][1][0] == White)
00950     {
00951      _White_List_Edge[_White_Pointer_Edge] = 4;//Store this internal variable  
00952      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00953     }
00954     if(CubeMap[5][1][2] == White)
00955     {
00956      _White_List_Edge[_White_Pointer_Edge] = 6;//Store this internal variable  
00957      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00958     }
00959     if(CubeMap[5][2][1] == White)
00960     {
00961      _White_List_Edge[_White_Pointer_Edge] = 8;//Store this internal variable  
00962      _White_Pointer_Edge = _White_Pointer_Edge + 1; 
00963     }
00964 }
00965 
00966 
00967 void ALGORITHM::_Find_edges_Orange()//Identify Orange edges
00968 {
00969     //Check White side 
00970     if(CubeMap[0][0][1] == Orange)
00971     {
00972      _Orange_List_Edge[_Orange_Pointer_Edge] = 2;//Store this internal variable  
00973      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
00974     }
00975     if(CubeMap[0][1][0] == Orange)
00976     {
00977      _Orange_List_Edge[_Orange_Pointer_Edge] = 4;//Store this internal variable  
00978      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
00979     }
00980     if(CubeMap[0][1][2] == Orange)
00981     {
00982      _Orange_List_Edge[_Orange_Pointer_Edge] = 6;//Store this internal variable  
00983      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
00984     }
00985     if(CubeMap[0][2][1] == Orange)
00986     {
00987      _Orange_List_Edge[_Orange_Pointer_Edge] = 8;//Store this internal variable  
00988      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
00989     }
00990     //Check Orange side
00991     if(CubeMap[1][0][1] == Orange)
00992     {
00993      _Orange_List_Edge[_Orange_Pointer_Edge] = 2;//Store this internal variable  
00994      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
00995     }
00996     if(CubeMap[1][1][0] == Orange)
00997     {
00998      _Orange_List_Edge[_Orange_Pointer_Edge] = 4;//Store this internal variable  
00999      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01000     }
01001     if(CubeMap[1][1][2] == Orange)
01002     {
01003      _Orange_List_Edge[_Orange_Pointer_Edge] = 6;//Store this internal variable  
01004      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01005     }
01006     if(CubeMap[1][2][1] == Orange)
01007     {
01008      _Orange_List_Edge[_Orange_Pointer_Edge] = 8;//Store this internal variable  
01009      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01010     }
01011     //Check Blue side
01012     if(CubeMap[2][0][1] == Orange)
01013     {
01014      _Orange_List_Edge[_Orange_Pointer_Edge] = 2;//Store this internal variable  
01015      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01016     }
01017     if(CubeMap[2][1][0] == Orange)
01018     {
01019      _Orange_List_Edge[_Orange_Pointer_Edge] = 4;//Store this internal variable  
01020      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01021     }
01022     if(CubeMap[2][1][2] == Orange)
01023     {
01024      _Orange_List_Edge[_Orange_Pointer_Edge] = 6;//Store this internal variable  
01025      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01026     }
01027     if(CubeMap[2][2][1] == Orange)
01028     {
01029      _Orange_List_Edge[_Orange_Pointer_Edge] = 8;//Store this internal variable  
01030      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01031     }
01032     //Check Red side
01033     if(CubeMap[3][0][1] == Orange)
01034     {
01035      _Orange_List_Edge[_Orange_Pointer_Edge] = 2;//Store this internal variable  
01036      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01037     }
01038     if(CubeMap[3][1][0] == Orange)
01039     {
01040      _Orange_List_Edge[_Orange_Pointer_Edge] = 4;//Store this internal variable  
01041      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01042     }
01043     if(CubeMap[3][1][2] == Orange)
01044     {
01045      _Orange_List_Edge[_Orange_Pointer_Edge] = 6;//Store this internal variable  
01046      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01047     }
01048     if(CubeMap[3][2][1] == Orange)
01049     {
01050      _Orange_List_Edge[_Orange_Pointer_Edge] = 8;//Store this internal variable  
01051      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01052     }
01053     //Check Green side
01054     if(CubeMap[4][0][1] == Orange)
01055     {
01056      _Orange_List_Edge[_Orange_Pointer_Edge] = 2;//Store this internal variable  
01057      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01058     }
01059     if(CubeMap[4][1][0] == Orange)
01060     {
01061      _Orange_List_Edge[_Orange_Pointer_Edge] = 4;//Store this internal variable  
01062      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01063     }
01064     if(CubeMap[4][1][2] == Orange)
01065     {
01066      _Orange_List_Edge[_Orange_Pointer_Edge] = 6;//Store this internal variable  
01067      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01068     }
01069     if(CubeMap[4][2][1] == Orange)
01070     {
01071      _Orange_List_Edge[_Orange_Pointer_Edge] = 8;//Store this internal variable  
01072      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01073     }
01074     //Check Yellow side
01075     if(CubeMap[5][0][1] == Orange)
01076     {
01077      _Orange_List_Edge[_Orange_Pointer_Edge] = 2;//Store this internal variable  
01078      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01079     }
01080     if(CubeMap[5][1][0] == Orange)
01081     {
01082      _Orange_List_Edge[_Orange_Pointer_Edge] = 4;//Store this internal variable  
01083      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01084     }
01085     if(CubeMap[5][1][2] == Orange)
01086     {
01087      _Orange_List_Edge[_Orange_Pointer_Edge] = 6;//Store this internal variable  
01088      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01089     }
01090     if(CubeMap[5][2][1] == Orange)
01091     {
01092      _Orange_List_Edge[_Orange_Pointer_Edge] = 8;//Store this internal variable  
01093      _Orange_Pointer_Edge = _Orange_Pointer_Edge + 1; 
01094     }
01095 }
01096 void ALGORITHM::_Find_edges_Blue()//Identify White edges
01097 {
01098     //Check White side 
01099     if(CubeMap[0][0][1] == Blue)
01100     {
01101      _Blue_List_Edge[_Blue_Pointer_Edge] = 2;//Store this internal variable  
01102      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01103     }
01104     if(CubeMap[0][1][0] == Blue)
01105     {
01106      _Blue_List_Edge[_Blue_Pointer_Edge] = 4;//Store this internal variable  
01107      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01108     }
01109     if(CubeMap[0][1][2] == Blue)
01110     {
01111      _Blue_List_Edge[_Blue_Pointer_Edge] = 6;//Store this internal variable  
01112      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01113     }
01114     if(CubeMap[0][2][1] == Blue)
01115     {
01116      _Blue_List_Edge[_Blue_Pointer_Edge] = 8;//Store this internal variable  
01117      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01118     }
01119     //Check Orange side
01120     if(CubeMap[1][0][1] == Blue)
01121     {
01122      _Blue_List_Edge[_Blue_Pointer_Edge] = 2;//Store this internal variable  
01123      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01124     }
01125     if(CubeMap[1][1][0] == Blue)
01126     {
01127      _Blue_List_Edge[_Blue_Pointer_Edge] = 4;//Store this internal variable  
01128      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01129     }
01130     if(CubeMap[1][1][2] == Blue)
01131     {
01132      _Blue_List_Edge[_Blue_Pointer_Edge] = 6;//Store this internal variable  
01133      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01134     }
01135     if(CubeMap[1][2][1] == Blue)
01136     {
01137      _Blue_List_Edge[_Blue_Pointer_Edge] = 8;//Store this internal variable  
01138      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01139     }
01140     //Check Blue side
01141     if(CubeMap[2][0][1] == Blue)
01142     {
01143      _Blue_List_Edge[_Blue_Pointer_Edge] = 2;//Store this internal variable  
01144      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01145     }
01146     if(CubeMap[2][1][0] == Blue)
01147     {
01148      _Blue_List_Edge[_Blue_Pointer_Edge] = 4;//Store this internal variable  
01149      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01150     }
01151     if(CubeMap[2][1][2] == Blue)
01152     {
01153      _Blue_List_Edge[_Blue_Pointer_Edge] = 6;//Store this internal variable  
01154      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01155     }
01156     if(CubeMap[2][2][1] == Blue)
01157     {
01158      _Blue_List_Edge[_Blue_Pointer_Edge] = 8;//Store this internal variable  
01159      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01160     }
01161     //Check Red side
01162     if(CubeMap[3][0][1] == Blue)
01163     {
01164      _Blue_List_Edge[_Blue_Pointer_Edge] = 2;//Store this internal variable  
01165      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01166     }
01167     if(CubeMap[3][1][0] == Blue)
01168     {
01169      _Blue_List_Edge[_Blue_Pointer_Edge] = 4;//Store this internal variable  
01170      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01171     }
01172     if(CubeMap[3][1][2] == Blue)
01173     {
01174      _Blue_List_Edge[_Blue_Pointer_Edge] = 6;//Store this internal variable  
01175      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01176     }
01177     if(CubeMap[3][2][1] == Blue)
01178     {
01179      _Blue_List_Edge[_Blue_Pointer_Edge] = 8;//Store this internal variable  
01180      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01181     }
01182     //Check Green side
01183     if(CubeMap[4][0][1] == Blue)
01184     {
01185      _Blue_List_Edge[_Blue_Pointer_Edge] = 2;//Store this internal variable  
01186      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01187     }
01188     if(CubeMap[4][1][0] == Blue)
01189     {
01190      _Blue_List_Edge[_Blue_Pointer_Edge] = 4;//Store this internal variable  
01191      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01192     }
01193     if(CubeMap[4][1][2] == Blue)
01194     {
01195      _Blue_List_Edge[_Blue_Pointer_Edge] = 6;//Store this internal variable  
01196      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01197     }
01198     if(CubeMap[4][2][1] == Blue)
01199     {
01200      _Blue_List_Edge[_Blue_Pointer_Edge] = 8;//Store this internal variable  
01201      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01202     }
01203     //Check Yellow side
01204     if(CubeMap[5][0][1] == Blue)
01205     {
01206      _Blue_List_Edge[_Blue_Pointer_Edge] = 2;//Store this internal variable  
01207      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01208     }
01209     if(CubeMap[5][1][0] == Blue)
01210     {
01211      _Blue_List_Edge[_Blue_Pointer_Edge] = 4;//Store this internal variable  
01212      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01213     }
01214     if(CubeMap[5][1][2] == Blue)
01215     {
01216      _Blue_List_Edge[_Blue_Pointer_Edge] = 6;//Store this internal variable  
01217      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01218     }
01219     if(CubeMap[5][2][1] == Blue)
01220     {
01221      _Blue_List_Edge[_Blue_Pointer_Edge] = 8;//Store this internal variable  
01222      _Blue_Pointer_Edge = _Blue_Pointer_Edge + 1; 
01223     }
01224 }
01225 void ALGORITHM::_Find_edges_Red()//Identify Red edges
01226 {
01227     //Check White side 
01228     if(CubeMap[0][0][1] == Red)
01229     {
01230      _Red_List_Edge[_Red_Pointer_Edge] = 2;//Store this internal variable  
01231      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01232     }
01233     if(CubeMap[0][1][0] == Red)
01234     {
01235      _Red_List_Edge[_Red_Pointer_Edge] = 4;//Store this internal variable  
01236      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01237     }
01238     if(CubeMap[0][1][2] == Red)
01239     {
01240      _Red_List_Edge[_Red_Pointer_Edge] = 6;//Store this internal variable  
01241      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01242     }
01243     if(CubeMap[0][2][1] == Red)
01244     {
01245      _Red_List_Edge[_Red_Pointer_Edge] = 8;//Store this internal variable  
01246      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01247     }
01248     //Check Orange side
01249     if(CubeMap[1][0][1] == Red)
01250     {
01251      _Red_List_Edge[_Red_Pointer_Edge] = 2;//Store this internal variable  
01252      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01253     }
01254     if(CubeMap[1][1][0] == Red)
01255     {
01256      _Red_List_Edge[_Red_Pointer_Edge] = 4;//Store this internal variable  
01257      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01258     }
01259     if(CubeMap[1][1][2] == Red)
01260     {
01261      _Red_List_Edge[_Red_Pointer_Edge] = 6;//Store this internal variable  
01262      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01263     }
01264     if(CubeMap[1][2][1] == Red)
01265     {
01266      _Red_List_Edge[_Red_Pointer_Edge] = 8;//Store this internal variable  
01267      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01268     }
01269     //Check Blue side
01270     if(CubeMap[2][0][1] == Red)
01271     {
01272      _Red_List_Edge[_Red_Pointer_Edge] = 2;//Store this internal variable  
01273      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01274     }
01275     if(CubeMap[2][1][0] == Red)
01276     {
01277      _Red_List_Edge[_Red_Pointer_Edge] = 4;//Store this internal variable  
01278      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01279     }
01280     if(CubeMap[2][1][2] == Red)
01281     {
01282      _Red_List_Edge[_Red_Pointer_Edge] = 6;//Store this internal variable  
01283      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01284     }
01285     if(CubeMap[2][2][1] == Red)
01286     {
01287      _Red_List_Edge[_Red_Pointer_Edge] = 8;//Store this internal variable  
01288      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01289     }
01290     //Check Red side
01291     if(CubeMap[3][0][1] == Red)
01292     {
01293      _Red_List_Edge[_Red_Pointer_Edge] = 2;//Store this internal variable  
01294      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01295     }
01296     if(CubeMap[3][1][0] == Red)
01297     {
01298      _Red_List_Edge[_Red_Pointer_Edge] = 4;//Store this internal variable  
01299      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01300     }
01301     if(CubeMap[3][1][2] == Red)
01302     {
01303      _Red_List_Edge[_Red_Pointer_Edge] = 6;//Store this internal variable  
01304      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01305     }
01306     if(CubeMap[3][2][1] == Red)
01307     {
01308      _Red_List_Edge[_Red_Pointer_Edge] = 8;//Store this internal variable  
01309      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01310     }
01311     //Check Green side
01312     if(CubeMap[4][0][1] == Red)
01313     {
01314      _Red_List_Edge[_Red_Pointer_Edge] = 2;//Store this internal variable  
01315      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01316     }
01317     if(CubeMap[4][1][0] == Red)
01318     {
01319      _Red_List_Edge[_Red_Pointer_Edge] = 4;//Store this internal variable  
01320      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01321     }
01322     if(CubeMap[4][1][2] == Red)
01323     {
01324      _Red_List_Edge[_Red_Pointer_Edge] = 6;//Store this internal variable  
01325      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01326     }
01327     if(CubeMap[4][2][1] == Red)
01328     {
01329      _Red_List_Edge[_Red_Pointer_Edge] = 8;//Store this internal variable  
01330      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01331     }
01332     //Check Yellow side
01333     if(CubeMap[5][0][1] == Red)
01334     {
01335      _Red_List_Edge[_Red_Pointer_Edge] = 2;//Store this internal variable  
01336      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01337     }
01338     if(CubeMap[5][1][0] == Red)
01339     {
01340      _Red_List_Edge[_Red_Pointer_Edge] = 4;//Store this internal variable  
01341      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01342     }
01343     if(CubeMap[5][1][2] == Red)
01344     {
01345      _Red_List_Edge[_Red_Pointer_Edge] = 6;//Store this internal variable  
01346      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01347     }
01348     if(CubeMap[5][2][1] == Red)
01349     {
01350      _Red_List_Edge[_Red_Pointer_Edge] = 8;//Store this internal variable  
01351      _Red_Pointer_Edge = _Red_Pointer_Edge + 1; 
01352     }
01353 }
01354 void ALGORITHM::_Find_edges_Green()//Identify Green edges
01355 {
01356     //Check White side 
01357     if(CubeMap[0][0][1] == Green)
01358     {
01359      _Green_List_Edge[_Green_Pointer_Edge] = 2;//Store this internal variable  
01360      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01361     }
01362     if(CubeMap[0][1][0] == Green)
01363     {
01364      _Green_List_Edge[_Green_Pointer_Edge] = 4;//Store this internal variable  
01365      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01366     }
01367     if(CubeMap[0][1][2] == Green)
01368     {
01369      _Green_List_Edge[_Green_Pointer_Edge] = 6;//Store this internal variable  
01370      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01371     }
01372     if(CubeMap[0][2][1] == Green)
01373     {
01374      _Green_List_Edge[_Green_Pointer_Edge] = 8;//Store this internal variable  
01375      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01376     }
01377     //Check Orange side
01378     if(CubeMap[1][0][1] == Green)
01379     {
01380      _Green_List_Edge[_Green_Pointer_Edge] = 2;//Store this internal variable  
01381      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01382     }
01383     if(CubeMap[1][1][0] == Green)
01384     {
01385      _Green_List_Edge[_Green_Pointer_Edge] = 4;//Store this internal variable  
01386      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01387     }
01388     if(CubeMap[1][1][2] == Green)
01389     {
01390      _Green_List_Edge[_Green_Pointer_Edge] = 6;//Store this internal variable  
01391      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01392     }
01393     if(CubeMap[1][2][1] == Green)
01394     {
01395      _Green_List_Edge[_Green_Pointer_Edge] = 8;//Store this internal variable  
01396      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01397     }
01398     //Check Blue side
01399     if(CubeMap[2][0][1] == Green)
01400     {
01401      _Green_List_Edge[_Green_Pointer_Edge] = 2;//Store this internal variable  
01402      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01403     }
01404     if(CubeMap[2][1][0] == Green)
01405     {
01406      _Green_List_Edge[_Green_Pointer_Edge] = 4;//Store this internal variable  
01407      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01408     }
01409     if(CubeMap[2][1][2] == Green)
01410     {
01411      _Green_List_Edge[_Green_Pointer_Edge] = 6;//Store this internal variable  
01412      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01413     }
01414     if(CubeMap[2][2][1] == Green)
01415     {
01416      _Green_List_Edge[_Green_Pointer_Edge] = 8;//Store this internal variable  
01417      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01418     }
01419     //Check Red side
01420     if(CubeMap[3][0][1] == Green)
01421     {
01422      _Green_List_Edge[_Green_Pointer_Edge] = 2;//Store this internal variable  
01423      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01424     }
01425     if(CubeMap[3][1][0] == Green)
01426     {
01427      _Green_List_Edge[_Green_Pointer_Edge] = 4;//Store this internal variable  
01428      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01429     }
01430     if(CubeMap[3][1][2] == Green)
01431     {
01432      _Green_List_Edge[_Green_Pointer_Edge] = 6;//Store this internal variable  
01433      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01434     }
01435     if(CubeMap[3][2][1] == Green)
01436     {
01437      _Green_List_Edge[_Green_Pointer_Edge] = 8;//Store this internal variable  
01438      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01439     }
01440     //Check Green side
01441     if(CubeMap[4][0][1] == Green)
01442     {
01443      _Green_List_Edge[_Green_Pointer_Edge] = 2;//Store this internal variable  
01444      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01445     }
01446     if(CubeMap[4][1][0] == Green)
01447     {
01448      _Green_List_Edge[_Green_Pointer_Edge] = 4;//Store this internal variable  
01449      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01450     }
01451     if(CubeMap[4][1][2] == Green)
01452     {
01453      _Green_List_Edge[_Green_Pointer_Edge] = 6;//Store this internal variable  
01454      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01455     }
01456     if(CubeMap[4][2][1] == Green)
01457     {
01458      _Green_List_Edge[_Green_Pointer_Edge] = 8;//Store this internal variable  
01459      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01460     }
01461     //Check Yellow side
01462     if(CubeMap[5][0][1] == Green)
01463     {
01464      _Green_List_Edge[_Green_Pointer_Edge] = 2;//Store this internal variable  
01465      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01466     }
01467     if(CubeMap[5][1][0] == Green)
01468     {
01469      _Green_List_Edge[_Green_Pointer_Edge] = 4;//Store this internal variable  
01470      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01471     }
01472     if(CubeMap[5][1][2] == Green)
01473     {
01474      _Green_List_Edge[_Green_Pointer_Edge] = 6;//Store this internal variable  
01475      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01476     }
01477     if(CubeMap[5][2][1] == Green)
01478     {
01479      _Green_List_Edge[_Green_Pointer_Edge] = 8;//Store this internal variable  
01480      _Green_Pointer_Edge = _Green_Pointer_Edge + 1; 
01481     }
01482 }
01483 void ALGORITHM::_Find_edges_Yellow()//Identify Yellow edges
01484 {
01485     //Check White side 
01486     if(CubeMap[0][0][1] == Yellow)
01487     {
01488      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 2;//Store this internal variable  
01489      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01490     }
01491     if(CubeMap[0][1][0] == Yellow)
01492     {
01493      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 4;//Store this internal variable  
01494      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01495     }
01496     if(CubeMap[0][1][2] == Yellow)
01497     {
01498      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 6;//Store this internal variable  
01499      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01500     }
01501     if(CubeMap[0][2][1] == Yellow)
01502     {
01503      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 8;//Store this internal variable  
01504      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01505     }
01506     //Check Orange side
01507     if(CubeMap[1][0][1] == Yellow)
01508     {
01509      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 2;//Store this internal variable  
01510      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01511     }
01512     if(CubeMap[1][1][0] == Yellow)
01513     {
01514      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 4;//Store this internal variable  
01515      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01516     }
01517     if(CubeMap[1][1][2] == Yellow)
01518     {
01519      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 6;//Store this internal variable  
01520      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01521     }
01522     if(CubeMap[1][2][1] == Yellow)
01523     {
01524      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 8;//Store this internal variable  
01525      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01526     }
01527     //Check Blue side
01528     if(CubeMap[2][0][1] == Yellow)
01529     {
01530      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 2;//Store this internal variable  
01531      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01532     }
01533     if(CubeMap[2][1][0] == Yellow)
01534     {
01535      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 4;//Store this internal variable  
01536      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01537     }
01538     if(CubeMap[2][1][2] == Yellow)
01539     {
01540      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 6;//Store this internal variable  
01541      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01542     }
01543     if(CubeMap[2][2][1] == Yellow)
01544     {
01545      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 8;//Store this internal variable  
01546      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01547     }
01548     //Check Red side
01549     if(CubeMap[3][0][1] == Yellow)
01550     {
01551      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 2;//Store this internal variable  
01552      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01553     }
01554     if(CubeMap[3][1][0] == Yellow)
01555     {
01556      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 4;//Store this internal variable  
01557      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01558     }
01559     if(CubeMap[3][1][2] == Yellow)
01560     {
01561      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 6;//Store this internal variable  
01562      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01563     }
01564     if(CubeMap[3][2][1] == Yellow)
01565     {
01566      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 8;//Store this internal variable  
01567      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01568     }
01569     //Check Green side
01570     if(CubeMap[4][0][1] == Yellow)
01571     {
01572      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 2;//Store this internal variable  
01573      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01574     }
01575     if(CubeMap[4][1][0] == Yellow)
01576     {
01577      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 4;//Store this internal variable  
01578      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01579     }
01580     if(CubeMap[4][1][2] == Yellow)
01581     {
01582      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 6;//Store this internal variable  
01583      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01584     }
01585     if(CubeMap[4][2][1] == Yellow)
01586     {
01587      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 8;//Store this internal variable  
01588      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01589     }
01590     //Check Yellow side
01591     if(CubeMap[5][0][1] == Yellow)
01592     {
01593      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 2;//Store this internal variable  
01594      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01595     }
01596     if(CubeMap[5][1][0] == Yellow)
01597     {
01598      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 4;//Store this internal variable  
01599      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01600     }
01601     if(CubeMap[5][1][2] == Yellow)
01602     {
01603      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 6;//Store this internal variable  
01604      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01605     }
01606     if(CubeMap[5][2][1] == Yellow)
01607     {
01608      _Yellow_List_Edge[_Yellow_Pointer_Edge] = 8;//Store this internal variable  
01609      _Yellow_Pointer_Edge = _Yellow_Pointer_Edge + 1; 
01610     }
01611 }
01612  
01613       
01614 //Forward Declaration of the functions
01615 SIDE::SIDE()//Constructor
01616 {
01617     _Cubelet_1_position = 1;
01618     _Cubelet_2_position = 2;
01619     _Cubelet_3_position = 3;
01620     _Cubelet_4_position = 4;
01621     _Cubelet_5_position = 5;
01622     _Cubelet_6_position = 6;
01623     _Cubelet_7_position = 7;
01624     _Cubelet_8_position = 8;
01625     _Cubelet_9_position = 9;
01626     
01627     _Cubelet_1_colour = 0;
01628     _Cubelet_2_colour = 0;
01629     _Cubelet_3_colour = 0;
01630     _Cubelet_4_colour = 0;
01631     _Cubelet_5_colour = 0;
01632     _Cubelet_6_colour = 0;
01633     _Cubelet_7_colour = 0;
01634     _Cubelet_8_colour = 0;
01635     _Cubelet_9_colour = 0;
01636 }
01637 SIDE::~SIDE()//Destructor
01638 {
01639     
01640 }
01641 
01642 
01643 int SIDE::SIDE_type()
01644 {
01645     return _Cubelet_5_colour;
01646 }
01647 void SIDE::Set_Colours(int CP1,int CP2,int CP3,int CP4,int CP5,int CP6,int CP7,int CP8,int CP9)
01648 {
01649     _Cubelet_1_colour = CP1;
01650     _Cubelet_2_colour = CP2;
01651     _Cubelet_3_colour = CP3;
01652     _Cubelet_4_colour = CP4;
01653     _Cubelet_5_colour = CP5;
01654     _Cubelet_6_colour = CP6;
01655     _Cubelet_7_colour = CP7;
01656     _Cubelet_8_colour = CP8;
01657     _Cubelet_9_colour = CP9;
01658 }