void game_end() { deleteScore(score); saveHighScores(highScores); deleteHighScores(highScores); deleteHammer(hammer); int i; for (i = 0; i < NUM_PCS; i++) deleteCScreen(cscreens[i]); free(cscreens); deleteButton(helpButton); deleteButton(exitButton); deleteSprite(helpBoard); deleteSprite(scoreBoard); deleteSprite(spriteBG); }
/* main */ int main( int argc, const char *argv[] ) { presetup(); setup(); while( true ) { int directionPressed = readInput(); if( directionPressed == -2 ) // quit { break; } advanceSnake( directionPressed ); refresh(); if( gameOver ) { saveHighScores(); gameOverSeq(); } } teardown(); return 0; }
void update(int mili) { Byte c = 0; if (!queueEmpty(&keys)) { c = queueGet(&keys); if (c == ESC_KEY) exit(0); } Bool mouseEvent = parse_mouse_event(mouseQueue, &mouse); updateHammer(hammer, mili, c, (mouseEvent ? &mouse : NULL)); static Bool shift_flag = false; char k; int i, len; switch (state) { case PLAYING: for (i = 0; i < NUM_PCS; i++) updateCScreen(cscreens[i], hammer, &numPCs, &score->score, mili); if (numPCs == 0) { state = END; hammer->state = GET_HAMMER; } updateButton(helpButton, hammer); if (helpButton->state == CLICKED) state = HELP; updateButton(exitButton, hammer); if (exitButton->state == CLICKED) exit(0); break; case END: if (hammer->state == HIT) { state = SCORE; highScore = isHighScore(highScores, score); } updateButton(helpButton, hammer); if (helpButton->state == CLICKED) state = HELP; updateButton(exitButton, hammer); if (exitButton->state == CLICKED) exit(0); break; case SCORE: if (highScore) { if (c != 0) { if (c == SHIFT_KEY) { shift_flag = true; } if (c == (SHIFT_KEY | RELEASED)) { shift_flag = false; break; } if (c == BACKSPACE_KEY) { len = strlen(score->name); if (len > 0) { score->name[len - 1] = NULL; } break; } k = scancodeToAscii(c); if (k != 0) { len = strlen(score->name); if (len < SCORE_NAME_LEN) { score->name[len] = (shift_flag ? toupper(k) : k); score->name[len + 1] = NULL; } } } } if (hammer->state == HIT && (!highScore || (c != SPACE_KEY && score->name[0] != NULL))) { if (highScore) { putScore(highScores, score); saveHighScores(highScores); } reset_game(); state = PLAYING; } break; case HELP: if (hammer->state == HIT) state = PLAYING; break; default: break; } }
/******************************************************************************* * Description: teardown function for the window * * Inputs: void * * Returns: void ******************************************************************************/ void teardown( void ) { saveHighScores(); endwin(); }