int control_loop() { int score_tally, score_tally2; struct timespec *sleep_time, *return_time; sleep_time = malloc(sizeof(struct timespec*)); sleep_time->tv_sec = 0; sleep_time->tv_nsec = 1; keypad(stdscr,true); while (doloop) { SetClock(); while(start_interval<end_interval) { current_getch = getch(); if ('q'==current_getch) doloop = 0; if (KEY_LEFT==current_getch && !pause) { if(!AgainstLeftWall()) ShiftTetradLeft(); UpdateDisplay(); } else if (KEY_RIGHT==current_getch && !pause) { if(!AgainstRightWall()) ShiftTetradRight(); UpdateDisplay(); } else if ('z'==current_getch && !pause){ RotateClockwise(); UpdateDisplay(); } else if('x'==current_getch && !pause){ Flip(); UpdateDisplay(); } else if ('c'==current_getch && !pause){ RotateCounterClockwise(); UpdateDisplay(); } else if(KEY_UP==current_getch && !pause){ RotateClockwise(); UpdateDisplay(); } else if(KEY_DOWN==current_getch && !pause){ if(!MadeContact()) { ShiftTetradDown(); SetClock(); UpdateDisplay(); } } else if(' '==current_getch && !pause){ int score_tally = 0; while(!MadeContact()){ score_tally += 1; ShiftTetradDown(); } score += score_tally * (level+1); SolidifyTetrad(); score_tally2 = ClearLines(); score += score_tally2 * score_tally2 * (level+1) * 100; lines_cleared += score_tally2; if (lines_cleared/10 > level) level++; if (!GenerateTetrad()) GameOver(); UpdateDisplay(); } else if('p'==current_getch){ pause = !pause; } if(!pause) start_interval=clock(); nanosleep(sleep_time, return_time); } if(MadeContact()) { SolidifyTetrad(); score_tally = ClearLines(); score += score_tally * score_tally * (level+1) * 100; lines_cleared += score_tally; if (lines_cleared/10 > level) level++; if (!GenerateTetrad()) GameOver(); } else { ShiftTetradDown(); } UpdateDisplay(); } endwin(); printf("Bye!\n"); return 0; }
void Cube::DoMethod(CubeRotateMethod method) { switch (method) { case ROTATE_NONE: case ROTATE_NONEi: break; case ROTATE_FRONT: F(); break; case ROTATE_BACK: B(); break; case ROTATE_LEFT: L(); break; case ROTATE_RIGHT: R(); break; case ROTATE_UP: U(); break; case ROTATE_DOWN: D(); break; case ROTATE_FRONTi: Fi(); break; case ROTATE_BACKi: Bi(); break; case ROTATE_LEFTi: Li(); break; case ROTATE_RIGHTi: Ri(); break; case ROTATE_UPi: Ui(); break; case ROTATE_DOWNi: Di(); break; case ROTATE_WHOLEX: RotateUp(); break; case ROTATE_WHOLEY: RotateLeft(); break; case ROTATE_WHOLEZ: RotateClockwise(); break; case ROTATE_WHOLEXi: RotateDown(); break; case ROTATE_WHOLEYi: RotateRight(); break; case ROTATE_WHOLEZi: RotateCounterClockwise(); break; default: break; } }