import java.awt.*; public final class WuerfelTools{ /*Gewonnen oder noch nicht*/ public static int Test(Wuerfelallgemein jetzt,Wuerfelallgemein original){ int sieg=0; if( (jetzt.linkeobereSeite() == original.linkeobereSeite() ) && (jetzt.obereSeite() == original.obereSeite() ) && (jetzt.obererechteSeite() == original.obererechteSeite() ) && (jetzt.linkeSeite() == original.linkeSeite() ) && (jetzt.liesMitte() == original.liesMitte() ) && (jetzt.rechteSeite() == original.rechteSeite() ) && (jetzt.untenlinkeSeite() == original.untenlinkeSeite() ) && (jetzt.untereSeite() == original.untereSeite() ) && (jetzt.rechtsrunterSeite()== original.rechtsrunterSeite() ) ) sieg = 1; return sieg; } /*************************************************************************************/ /***********************Horizontal verschieben*****************************************/ /*************************************************************************************/ public static Wuerfelallgemein verschhori( Wuerfelallgemein wrechts,Wuerfelallgemein wlinks,int richtung,int Seiten ){ int colliob =wlinks.linkeobereSeite(); int colob =wlinks.obereSeite(); int colobre =wlinks.obererechteSeite(); int colli =wlinks.linkeSeite(); int colMitte=wlinks.liesMitte(); int colre =wlinks.rechteSeite(); int colunli =wlinks.untenlinkeSeite(); int colun =wlinks.untereSeite(); int colreun =wlinks.rechtsrunterSeite(); if(richtung==1){ if(Seiten==1){ wrechts=new Wuerfelallgemein( colobre ,colre ,colreun, colob ,colMitte,colun, colliob ,colli ,colunli); return wrechts; } else{ wrechts= new Wuerfelallgemein( colliob ,colob ,colobre, wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } } else if(richtung==2){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite() ,wrechts.obererechteSeite(), colli ,colMitte ,colre, wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(richtung==3){ if(Seiten==1){ wrechts=new Wuerfelallgemein( colunli ,colli ,colliob, colun ,colMitte,colob, colreun ,colre ,colobre); return wrechts; } else{ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), colunli ,colun ,colreun); return wrechts; } } else if(richtung==4){ if(Seiten==1){ wrechts=new Wuerfelallgemein( colunli ,colli ,colliob, colun ,colMitte,colob, colreun ,colre ,colobre); return wrechts; } else{ wrechts= new Wuerfelallgemein( colliob ,colob ,colobre, wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } } else if(richtung==5){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite() ,wrechts.obererechteSeite(), colli ,colMitte ,colre, wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else{ if(Seiten==1){ wrechts=new Wuerfelallgemein( colobre ,colre ,colreun, colob ,colMitte,colun, colliob ,colli ,colunli); return wrechts; } else{ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), colunli ,colun ,colreun); return wrechts; } } } /*************************************************************************************/ /***********************ganze Scheibe drehen******************************************/ /*************************************************************************************/ public static Wuerfelallgemein ScheibeDrehen( Wuerfelallgemein wrechts,Wuerfelallgemein wlinks,int richtung,int Seite,int Scheibe){ int colliob =wlinks.linkeobereSeite(); int colob =wlinks.obereSeite(); int colobre =wlinks.obererechteSeite(); int colli =wlinks.linkeSeite(); int colMitte=wlinks.liesMitte(); int colre =wlinks.rechteSeite(); int colunli =wlinks.untenlinkeSeite(); int colun =wlinks.untereSeite(); int colreun =wlinks.rechtsrunterSeite(); if(richtung==1){ if(Scheibe==1){ wrechts=new Wuerfelallgemein( colunli ,colli ,colliob, colun ,colMitte,colob, colreun ,colre ,colobre); return wrechts; } else{ if(Seite==1){ wrechts= new Wuerfelallgemein( colunli ,colli ,colliob, wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==2){ wrechts= new Wuerfelallgemein( colunli ,wrechts.obereSeite() ,wrechts.obererechteSeite(), colun ,wrechts.liesMitte() ,wrechts.rechteSeite(), colreun ,wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==3){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), colreun ,colre ,colobre); return wrechts; } else { wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),colliob, wrechts.linkeSeite() ,wrechts.liesMitte() ,colob, wrechts.untenlinkeSeite(),wrechts.untereSeite(),colobre); return wrechts; } } } if(richtung==2){ if(Seite==1){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), colun ,colMitte ,colob , wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==2){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),colli ,wrechts.obererechteSeite(), wrechts.linkeSeite() ,colMitte,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),colre,wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==3){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), colun ,colMitte ,colob , wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else { wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),colli,wrechts.obererechteSeite(), wrechts.linkeSeite() , colMitte,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),colre,wrechts.rechtsrunterSeite()); return wrechts; } } else if(richtung==3){ if(Scheibe==1){ wrechts=new Wuerfelallgemein( colobre ,colre ,colreun, colob ,colMitte,colun, colliob ,colli ,colunli); return wrechts; } else{ if(Seite==1){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite() ,wrechts.obererechteSeite(), wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), colreun,colre,colobre); return wrechts; } else if(Seite==2){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite() ,colliob, wrechts.linkeSeite() ,wrechts.liesMitte() ,colob, wrechts.untenlinkeSeite(),wrechts.untereSeite(),colobre); return wrechts; } else if(Seite==3){ wrechts= new Wuerfelallgemein( colunli,colli,colliob, wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else { wrechts= new Wuerfelallgemein( colunli,wrechts.obereSeite(),wrechts.obererechteSeite(), colun,wrechts.liesMitte() ,wrechts.rechteSeite(), colreun,wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } } } if(richtung==4){ if(Scheibe==1){ wrechts=new Wuerfelallgemein( colobre ,colre ,colreun, colob ,colMitte,colun, colliob ,colli ,colunli); return wrechts; } else{ if(Seite==1){ wrechts= new Wuerfelallgemein( colobre ,colre ,colreun, wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==2){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite() ,colreun, wrechts.linkeSeite() ,wrechts.liesMitte() ,colun, wrechts.untenlinkeSeite(),wrechts.untereSeite(),colunli); return wrechts; } else if(Seite==3){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), colliob ,colli ,colunli); return wrechts; } else { wrechts= new Wuerfelallgemein( colobre,wrechts.obereSeite(),wrechts.obererechteSeite(), colob,wrechts.liesMitte() ,wrechts.rechteSeite(), colliob,wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } } } if(richtung==5){ if(Seite==1){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), colob ,colMitte ,colun , wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==2){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),colre ,wrechts.obererechteSeite(), wrechts.linkeSeite() ,colMitte,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),colli,wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==3){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),wrechts.obererechteSeite(), colob ,colMitte ,colun , wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else { wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),colre,wrechts.obererechteSeite(), wrechts.linkeSeite() , colMitte,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),colli,wrechts.rechtsrunterSeite()); return wrechts; } } else{ if(Scheibe==1){ wrechts=new Wuerfelallgemein( colunli ,colli ,colliob, colun ,colMitte,colob, colreun ,colre ,colobre); return wrechts; } else{ if(Seite==1){ wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite() ,wrechts.obererechteSeite(), wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), colliob,colli,colunli); return wrechts; } else if(Seite==2){ wrechts= new Wuerfelallgemein( colobre,wrechts.obereSeite() ,wrechts.obererechteSeite(), colob,wrechts.liesMitte() ,wrechts.rechteSeite(), colliob,wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else if(Seite==3){ wrechts= new Wuerfelallgemein( colobre,colre,colreun, wrechts.linkeSeite() ,wrechts.liesMitte() ,wrechts.rechteSeite(), wrechts.untenlinkeSeite(),wrechts.untereSeite(),wrechts.rechtsrunterSeite()); return wrechts; } else { wrechts= new Wuerfelallgemein( wrechts.linkeobereSeite(),wrechts.obereSeite(),colreun, wrechts.linkeSeite(),wrechts.liesMitte() ,colun, wrechts.untenlinkeSeite(),wrechts.untereSeite(),colunli); return wrechts; } } } } /*************************************************************************************/ /***********************Vertikal verschieben******************************************/ /*************************************************************************************/ public static Wuerfelallgemein verschverti( Wuerfelallgemein wmitte,Wuerfelallgemein wunten,int richtung, int rueckseite, int oben, int Seiten ){ int colliob =wunten.linkeobereSeite(); int colob =wunten.obereSeite(); int colobre =wunten.obererechteSeite(); int colli =wunten.linkeSeite(); int colMitte=wunten.liesMitte(); int colre =wunten.rechteSeite(); int colunli =wunten.untenlinkeSeite(); int colun =wunten.untereSeite(); int colreun =wunten.rechtsrunterSeite(); if(richtung==1){ /*vertikale Verschiebung Sonderstellung Darstellung Rueckseite gespiegelt oben->hinten*/ if((rueckseite==1) && (oben==1)){ wmitte= new Wuerfelallgemein(wmitte.linkeobereSeite(),wmitte.obereSeite(),colunli, wmitte.linkeSeite(),wmitte.liesMitte(),colli, wmitte.untenlinkeSeite(),wmitte.untereSeite(),colliob); return wmitte; } /*vertikale Verschiebung Sonderstellung Darstellung Rueckseite gespiegelt hinten->unten*/ else if((rueckseite==1) && (oben==0)){ wmitte= new Wuerfelallgemein(colreun,wmitte.obereSeite(),wmitte.obererechteSeite(), colre,wmitte.liesMitte(),wmitte.rechteSeite(), colobre,wmitte.untereSeite(),wmitte.rechtsrunterSeite()); return wmitte; } /*normal*/ else{ /*Seite links*/ if(Seiten==1){ wmitte=new Wuerfelallgemein( colobre ,colre ,colreun, colob ,colMitte,colun, colliob ,colli ,colunli); return wmitte; } else{ wmitte= new Wuerfelallgemein( colliob, wmitte.obereSeite(), wmitte.obererechteSeite(), colli, wmitte.liesMitte(), wmitte.rechteSeite(), colunli, wmitte.untereSeite(), wmitte.rechtsrunterSeite());//wmitte.rechtsrunterSeite()); return wmitte; } } } else if(richtung==2){ if((rueckseite==1) && (oben==1)){ wmitte= new Wuerfelallgemein( wmitte.linkeobereSeite(), colun ,wmitte.obererechteSeite(), wmitte.linkeSeite() , colMitte,wmitte.rechteSeite(), wmitte.untenlinkeSeite(), colob ,wmitte.rechtsrunterSeite()); return wmitte; } else if((rueckseite==1) && (oben==0)){ wmitte= new Wuerfelallgemein( wmitte.linkeobereSeite(), colun ,wmitte.obererechteSeite(), wmitte.linkeSeite() , colMitte,wmitte.rechteSeite(), wmitte.untenlinkeSeite(), colob ,wmitte.rechtsrunterSeite()); return wmitte; } else{ wmitte= new Wuerfelallgemein( wmitte.linkeobereSeite(), colob ,wmitte.obererechteSeite(), wmitte.linkeSeite() , colMitte,wmitte.rechteSeite(), wmitte.untenlinkeSeite(), colun ,wmitte.rechtsrunterSeite()); return wmitte; } } else if(richtung==3){ if((rueckseite==1) && (oben==1)){ wmitte= new Wuerfelallgemein( colreun ,wmitte.obereSeite() ,wmitte.obererechteSeite(), colre ,wmitte.liesMitte() ,wmitte.rechteSeite(), colobre ,wmitte.untereSeite(),wmitte.rechtsrunterSeite()); return wmitte; } else if((rueckseite==1) && (oben==0)){ wmitte= new Wuerfelallgemein(wmitte.linkeobereSeite(),wmitte.obereSeite(),colunli, wmitte.linkeSeite(),wmitte.liesMitte(),colli, wmitte.untenlinkeSeite(),wmitte.untereSeite(),colliob); return wmitte; } else{ if(Seiten==1){ wmitte= new Wuerfelallgemein( colunli ,colli ,colliob, colun ,colMitte,colob, colreun ,colre ,colobre); return wmitte; } else{ wmitte= new Wuerfelallgemein(wmitte.linkeobereSeite(),wmitte.obereSeite(),colobre, wmitte.linkeSeite(),wmitte.liesMitte(),colre, wmitte.untenlinkeSeite(),wmitte.untereSeite(),colreun); return wmitte; } } } else if(richtung==4){ /*vertikale Verschiebung Sonderstellung Darstellung Rueckseite gespiegelt oben->hinten*/ if((rueckseite==1) && (oben==1)){ wmitte= new Wuerfelallgemein(wmitte.linkeobereSeite(),wmitte.obereSeite(),colunli, wmitte.linkeSeite(),wmitte.liesMitte(),colli, wmitte.untenlinkeSeite(),wmitte.untereSeite(),colliob); return wmitte; } /*vertikale Verschiebung Sonderstellung Darstellung Rueckseite gespiegelt hinten->unten*/ else if((rueckseite==1) && (oben==0)){ wmitte= new Wuerfelallgemein(colreun,wmitte.obereSeite(),wmitte.obererechteSeite(), colre,wmitte.liesMitte(),wmitte.rechteSeite(), colobre,wmitte.untereSeite(),wmitte.rechtsrunterSeite()); return wmitte; } /*normal*/ else{ /*Seite links*/ if(Seiten==1){ wmitte=new Wuerfelallgemein( colobre ,colre ,colreun, colob ,colMitte,colun, colliob ,colli ,colunli); return wmitte; } else{ wmitte= new Wuerfelallgemein( colliob, wmitte.obereSeite(), wmitte.obererechteSeite(), colli, wmitte.liesMitte(), wmitte.rechteSeite(), colunli, wmitte.untereSeite(), wmitte.rechtsrunterSeite());//wmitte.rechtsrunterSeite()); return wmitte; } } } else if(richtung==5){ if((rueckseite==1) && (oben==1)){ wmitte= new Wuerfelallgemein( wmitte.linkeobereSeite(), colun ,wmitte.obererechteSeite(), wmitte.linkeSeite() , colMitte,wmitte.rechteSeite(), wmitte.untenlinkeSeite(), colob ,wmitte.rechtsrunterSeite()); return wmitte; } else if((rueckseite==1) && (oben==0)){ wmitte= new Wuerfelallgemein( wmitte.linkeobereSeite(), colun ,wmitte.obererechteSeite(), wmitte.linkeSeite() , colMitte,wmitte.rechteSeite(), wmitte.untenlinkeSeite(), colob ,wmitte.rechtsrunterSeite()); return wmitte; } else{ wmitte= new Wuerfelallgemein( wmitte.linkeobereSeite(), colob ,wmitte.obererechteSeite(), wmitte.linkeSeite() , colMitte,wmitte.rechteSeite(), wmitte.untenlinkeSeite(), colun ,wmitte.rechtsrunterSeite()); return wmitte; } } else { if((rueckseite==1) && (oben==1)){ wmitte= new Wuerfelallgemein( colreun ,wmitte.obereSeite() ,wmitte.obererechteSeite(), colre ,wmitte.liesMitte() ,wmitte.rechteSeite(), colobre ,wmitte.untereSeite(),wmitte.rechtsrunterSeite()); return wmitte; } else if((rueckseite==1) && (oben==0)){ wmitte= new Wuerfelallgemein(wmitte.linkeobereSeite(),wmitte.obereSeite(),colunli, wmitte.linkeSeite(),wmitte.liesMitte(),colli, wmitte.untenlinkeSeite(),wmitte.untereSeite(),colliob); return wmitte; } else{ if(Seiten==1){ wmitte= new Wuerfelallgemein( colunli ,colli ,colliob, colun ,colMitte,colob, colreun ,colre ,colobre); return wmitte; } else{ wmitte= new Wuerfelallgemein(wmitte.linkeobereSeite(),wmitte.obereSeite(),colobre, wmitte.linkeSeite(),wmitte.liesMitte(),colre, wmitte.untenlinkeSeite(),wmitte.untereSeite(),colreun); return wmitte; } } } } public static void zeichnen(Graphics g, Wuerfelallgemein w, int startx, int starty) { int i; int Startpunktx = startx; int Startpunkty = starty; int colliob =w.linkeobereSeite(); int colob =w.obereSeite(); int colobre =w.obererechteSeite(); int colli =w.linkeSeite(); int colMitte=w.liesMitte(); int colre =w.rechteSeite(); int colunli =w.untenlinkeSeite(); int colun =w.untereSeite(); int colreun =w.rechtsrunterSeite(); switch(colliob){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx,Startpunkty,40,40); switch(colob){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx+41,Startpunkty,40,40); switch(colobre){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx+82,Startpunkty,40,40); switch(colli){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx,Startpunkty+41,40,40); switch(colMitte){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx+41,Startpunkty+41,40,40); switch(colre){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx+82,Startpunkty+41,40,40); switch(colunli){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx,Startpunkty+82,40,40); switch(colun){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx+41,Startpunkty+82,40,40); switch(colreun){ case 1: g.setColor(Color.white);break; case 2: g.setColor(Color.blue);break; case 3: g.setColor(Color.red);break; case 4: g.setColor(Color.orange);break; case 5: g.setColor(Color.yellow);break; case 6: g.setColor(Color.green);break; } g.fillRect(Startpunktx+82,Startpunkty+82,40,40); } }