Rgb Red = new Rgb(255, 0, 0); Rgb White = new Rgb(255, 255, 255); Rgb Blue = new Rgb(0, 0, 255); Rgb Green = new Rgb(0, 255, 0); Rgb Orange = new Rgb(255, 127, 0); Rgb Yellow = new Rgb(255, 255, 0); Rgb Black = new Rgb(0, 0, 0); int VUP = 0; int VDOWN = 1; int VLEFT = 2; int VRIGHT = 3; int VFRONT = 4; int VBACK = 5; class Rubiks { Cube fmd, fbl, fbr, fmr, f, fml, ftl, fmt, ftr, rm, br, dm, bl, lm, tl, tm, tr, bmd, bbl, bbr, bmr, b, bml, btl, bmt, btr; void swap_color(Cube a, int facea, Cube b, int faceb) { Rgb tmp; tmp = a.getColorFace(facea); println("R: " + tmp.r + ", G: " + tmp.g + ", B: " + tmp.b); a.setColorFace(b.getColorFace(faceb), facea); b.setColorFace(tmp, faceb); } void u() { // Edges swap_color(ftr, VFRONT, btr, VRIGHT); swap_color(ftr, VUP, btr, VUP); swap_color(ftr, VRIGHT, btr, VBACK); swap_color(btr, VUP, btl, VUP); swap_color(btr, VRIGHT, btl, VBACK); swap_color(btr, VBACK, btl, VLEFT); swap_color(btl, VUP, ftl, VUP); swap_color(btl, VBACK, ftl, VLEFT); swap_color(btl, VLEFT, ftl, VFRONT); // Center swap_color(fmt, VFRONT, tr, VRIGHT); swap_color(fmt, VUP, tr, VUP); swap_color(tr, VRIGHT, bmt, VBACK); swap_color(tr, VUP, bmt, VUP); swap_color(bmt, VBACK, tl, VLEFT); swap_color(bmt, VUP, tl, VUP); } void dp() { // Edges swap_color(fbr, VFRONT, bbr, VRIGHT); swap_color(fbr, VDOWN, bbr, VDOWN); swap_color(fbr, VRIGHT, bbr, VBACK); swap_color(bbr, VDOWN, bbl, VDOWN); swap_color(bbr, VRIGHT, bbl, VBACK); swap_color(bbr, VBACK, bbl, VLEFT); swap_color(bbl, VDOWN, fbl, VDOWN); swap_color(bbl, VBACK, fbl, VLEFT); swap_color(bbl, VLEFT, fbl, VFRONT); // Center swap_color(fmd, VFRONT, br, VRIGHT); swap_color(fmd, VDOWN, br, VDOWN); swap_color(br, VRIGHT, bmd, VBACK); swap_color(br, VDOWN, bmd, VDOWN); swap_color(bmd, VBACK, bl, VLEFT); swap_color(bmd, VDOWN, bl, VDOWN); } void bp() { // Edges swap_color(btr, VUP, bbr, VRIGHT); swap_color(btr, VBACK, bbr, VBACK); swap_color(btr, VRIGHT, bbr, VDOWN); swap_color(bbr, VRIGHT, bbl, VDOWN); swap_color(bbr, VBACK, bbl, VBACK); swap_color(bbr, VDOWN, bbl, VLEFT); swap_color(bbl, VDOWN, btl, VLEFT); // THis one swap_color(bbl, VBACK, btl, VBACK); swap_color(bbl, VLEFT, btl, VUP); // Center swap_color(bmt, VBACK, bmr, VBACK); swap_color(bmt, VUP, bmr, VRIGHT); swap_color(bmr, VBACK, bmd, VBACK); swap_color(bmr, VRIGHT, bmd, VDOWN); swap_color(bmd, VBACK, bml, VBACK); swap_color(bmd, VDOWN, bml, VLEFT); } void b() { this.bp(); this.bp(); this.bp(); } void fp() { // Edges swap_color(ftr, VUP, fbr, VRIGHT); swap_color(ftr, VFRONT, fbr, VFRONT); swap_color(ftr, VRIGHT, fbr, VDOWN); swap_color(fbr, VRIGHT, fbl, VDOWN); swap_color(fbr, VFRONT, fbl, VFRONT); swap_color(fbr, VDOWN, fbl, VLEFT); swap_color(fbl, VDOWN, ftl, VLEFT); // THis one swap_color(fbl, VFRONT, ftl, VFRONT); swap_color(fbl, VLEFT, ftl, VUP); // Center swap_color(fmt, VFRONT, fmr, VFRONT); swap_color(fmt, VUP, fmr, VRIGHT); swap_color(fmr, VFRONT, fmd, VFRONT); swap_color(fmr, VRIGHT, fmd, VDOWN); swap_color(fmd, VFRONT, fml, VFRONT); swap_color(fmd, VDOWN, fml, VLEFT); } void f() { this.fp(); this.fp(); this.fp(); } void d() { this.dp(); this.dp(); this.dp(); } void up() { this.u(); this.u(); this.u(); } void r() { // Edges swap_color(btr, VUP, ftr, VFRONT); swap_color(btr, VBACK, ftr, VUP); swap_color(btr, VRIGHT, ftr, VRIGHT); swap_color(ftr, VUP, fbr, VFRONT); swap_color(ftr, VFRONT, fbr, VDOWN); swap_color(ftr, VRIGHT, fbr, VRIGHT); swap_color(fbr, VFRONT, bbr, VDOWN); swap_color(fbr, VDOWN, bbr, VBACK); swap_color(fbr, VRIGHT, bbr, VRIGHT); // Center swap_color(fmr, VFRONT, tr, VUP); swap_color(fmr, VRIGHT, tr, VRIGHT); swap_color(fmr, VFRONT, br, VDOWN); swap_color(fmr, VRIGHT, br, VRIGHT); swap_color(br, VDOWN, bmr, VBACK); swap_color(br, VRIGHT, bmr, VRIGHT); } void lp() { // Edges swap_color(btl, VUP, ftl, VFRONT); swap_color(btl, VBACK, ftl, VUP); swap_color(btl, VRIGHT, ftl, VRIGHT); swap_color(ftl, VUP, fbl, VFRONT); swap_color(ftl, VFRONT, fbl, VDOWN); swap_color(ftl, VRIGHT, fbl, VRIGHT); swap_color(fbl, VFRONT, bbl, VDOWN); swap_color(fbl, VDOWN, bbl, VBACK); swap_color(fbl, VRIGHT, bbl, VRIGHT); // Center swap_color(fml, VFRONT, tl, VUP); swap_color(fml, VRIGHT, tl, VRIGHT); swap_color(fml, VFRONT, bl, VDOWN); swap_color(fml, VRIGHT, bl, VRIGHT); swap_color(bl, VDOWN, bml, VBACK); swap_color(bl, VRIGHT, bml, VRIGHT); } void l() { this.lp(); this.lp(); this.lp(); } void rp() { this.r(); this.r(); this.r(); } void draw() { // front face fmd.draw(); fbl.draw(); fbr.draw(); fmr.draw(); f.draw(); fml.draw(); ftl.draw(); fmt.draw(); ftr.draw(); // second raw rm.draw(); br.draw(); dm.draw(); bl.draw(); lm.draw(); tl.draw(); tm.draw(); tr.draw(); // backface bmd.draw(); bbl.draw(); bbr.draw(); bmr.draw(); b.draw(); bml.draw(); btl.draw(); bmt.draw(); btr.draw(); } Rubiks() { fmd = new Cube(new Pos(0, 100, 100), Black, Yellow, Black, Black, Red, Black); fbl = new Cube(new Pos(100, 0, 0), Black, Yellow, Green, Black, Red, Black); fbr = new Cube(new Pos(-200, 0, 0), Black, Yellow, Black, Blue, Red, Black); fmr = new Cube(new Pos(0, 0, -100), Black, Black, Black, Blue, Red, Black); f = new Cube(new Pos(100, 0, 0), Black, Black, Black, Black, Red, Black); fml = new Cube(new Pos(100, 0, 0), Black, Black, Green, Black, Red, Black); ftl = new Cube(new Pos(0, 0, -100), White, Black, Green, Black, Red, Black); fmt = new Cube(new Pos(-100, 0, 0), White, Black, Black, Black, Red, Black); ftr = new Cube(new Pos(-100, 0, 0), White, Black, Black, Blue, Red, Black); // middle row rm = new Cube(new Pos(0, -100, 100), Black, Black, Black, Blue, Black, Black); br = new Cube(new Pos(0, 0, 100), Black, Yellow, Black, Blue, Black, Black); dm = new Cube(new Pos(100, 0, 0), Black, Yellow, Black, Black, Red, Black); bl = new Cube(new Pos(100, 0, 0), Black, Yellow, Green, Black, Black, Black); lm = new Cube(new Pos(0, 0, -100), Black, Black, Green, Black, Black, Black); tl = new Cube(new Pos(0, 0, -100), White, Black, Green, Black, Black, Black); tm = new Cube(new Pos(-100, 0, 0), White, Black, Black, Black, Black, Black); tr = new Cube(new Pos(-100, 0, 0), White, Black, Black, Blue, Red, Black); // back face bmd = new Cube(new Pos(100, -100, 200), Black, Yellow, Black, Black, Black, Orange); bbl = new Cube(new Pos(100, 0, 0), Black, Yellow, Green, Black, Black, Orange); bbr = new Cube(new Pos(-200, 0, 0), Black, Yellow, Black, Blue, Black, Orange); bmr = new Cube(new Pos(0, 0, -100), Black, Black, Black, Blue, Black, Orange); b = new Cube(new Pos(100, 0, 0), Black, Black, Black, Black, Black, Orange); bml = new Cube(new Pos(100, 0, 0), Black, Black, Green, Black, Black, Orange); btl = new Cube(new Pos(0, 0, -100), White, Black, Green, Black, Black, Orange); bmt = new Cube(new Pos(-100, 0, 0), White, Black, Black, Black, Black, Orange); btr = new Cube(new Pos(-100, 0, 0), White, Black, Black, Blue, Black, Orange); } }