static void Main(string[] args) { using (RubiksCube game = new RubiksCube()) { game.Run(); } }
private static void Display() { RubiksCube cur = rcOld.Count == 0 ? rc : rcOld.Peek(); Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glPushMatrix(); for (int i = -1; i < 2; ++i) { for (int j = -1; j < 2; ++j) { for (int k = -1; k < 2; ++k) { VisCube(cur.GetCube(new Coordinates(i, j, k))); } } } Gl.glPopMatrix(); Glut.glutSwapBuffers(); }
private static void DisplayEdgeRotation() { RubiksCube cur = rcOld.Count == 0 ? rc : rcOld.Peek(); EdgeRotationEventArgs curERArgs = erArgs.Peek(); Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_MODELVIEW); double blink = StdCubeSize + DistBetweenCubes; Cube tmp = null; double direction = 1.0; if (curERArgs.ER.Anticlockwise) { direction = -1.0; } for (int i = -1; i < 2; ++i) { for (int j = -1; j < 2; ++j) { for (int k = -1; k < 2; ++k) { if (curERArgs.ER.EN == EdgeNum.U && k == 1) { Gl.glPushMatrix(); Gl.glTranslated(0, blink, 0); Gl.glRotated(angle, 0, -direction, 0); tmp = cur.GetCube(new Coordinates(i, j, k)); VisCube(new Cube(tmp.Colors, new Coordinates(tmp.Coord.X, tmp.Coord.Y, 0))); Gl.glPopMatrix(); } else if (curERArgs.ER.EN == EdgeNum.F && i == 1) { Gl.glPushMatrix(); Gl.glTranslated(0, 0, blink); Gl.glRotated(angle, 0, 0, -direction); tmp = cur.GetCube(new Coordinates(i, j, k)); VisCube(new Cube(tmp.Colors, new Coordinates(0, tmp.Coord.Y, tmp.Coord.Z))); Gl.glPopMatrix(); } else if (curERArgs.ER.EN == EdgeNum.R && j == 1) { Gl.glPushMatrix(); Gl.glTranslated(blink, 0, 0); Gl.glRotated(angle, -direction, 0, 0); tmp = cur.GetCube(new Coordinates(i, j, k)); VisCube(new Cube(tmp.Colors, new Coordinates(tmp.Coord.X, 0, tmp.Coord.Z))); Gl.glPopMatrix(); } else if (curERArgs.ER.EN == EdgeNum.L && j == -1) { Gl.glPushMatrix(); Gl.glTranslated(-blink, 0, 0); Gl.glRotated(angle, direction, 0, 0); tmp = cur.GetCube(new Coordinates(i, j, k)); VisCube(new Cube(tmp.Colors, new Coordinates(tmp.Coord.X, 0, tmp.Coord.Z))); Gl.glPopMatrix(); } else if (curERArgs.ER.EN == EdgeNum.B && i == -1) { Gl.glPushMatrix(); Gl.glTranslated(0, 0, -blink); Gl.glRotated(angle, 0, 0, direction); tmp = cur.GetCube(new Coordinates(i, j, k)); VisCube(new Cube(tmp.Colors, new Coordinates(0, tmp.Coord.Y, tmp.Coord.Z))); Gl.glPopMatrix(); } else if (curERArgs.ER.EN == EdgeNum.D && k == -1) { Gl.glPushMatrix(); Gl.glTranslated(0, -blink, 0); Gl.glRotated(angle, 0, direction, 0); tmp = cur.GetCube(new Coordinates(i, j, k)); VisCube(new Cube(tmp.Colors, new Coordinates(tmp.Coord.X, tmp.Coord.Y, 0))); Gl.glPopMatrix(); } else { VisCube(cur.GetCube(new Coordinates(i, j, k))); } } } } //switch (erArgs.ER.EN) //{ // case EdgeNum.U: // Gl.glTranslated(blink, 0, 0); // Gl.glRotated(angle, direction, 0, 0); // Gl.glTranslated(-blink, 0, 0); // break; // case EdgeNum.F: // Gl.glTranslated(0, 0, blink); // Gl.glRotated(angle, 0, 0, direction); // Gl.glTranslated(0, 0, -blink); // break; // case EdgeNum.R: // Gl.glTranslated(0, blink, 0); // Gl.glRotated(angle, 0, -direction, 0); // Gl.glTranslated(0, -blink, 0); // break; // case EdgeNum.L: // Gl.glTranslated(0, -blink, 0); // Gl.glRotated(angle, 0, direction, 0); // Gl.glTranslated(0, blink, 0); // break; // case EdgeNum.B: // Gl.glTranslated(0, 0, -blink); // Gl.glRotated(angle, 0, 0, -direction); // Gl.glTranslated(0, 0, blink); // break; // case EdgeNum.D: // Gl.glTranslated(-blink, 0, 0); // Gl.glRotated(angle, -direction, 0, 0); // Gl.glTranslated(blink, 0, 0); // break; //} //Display(); Glut.glutSwapBuffers(); AngleIncrementation(curERArgs.ER.On180 ? 180.0 : 90.0); }