Esempio n. 1
0
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);
}
Esempio n. 2
0
/* 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;
}
Esempio n. 3
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;
	}
}
Esempio n. 4
0
/*******************************************************************************
 * Description: teardown function for the window
 * 
 * Inputs: void
 * 
 * Returns: void
 ******************************************************************************/
void teardown( void )
{
  saveHighScores();
  endwin();
}