예제 #1
0
/** Calls all drawing routines in order */
void engine_draw(game_s* g)
{
    WINDOW* board = engine.screen.board.win;
    werase(board);

    switch (g->state)
    {
    case PLAYING:
        engine_draw_board(&(g->board));
        engine_draw_piece(&(g->piece_ghost), board);
        engine_draw_piece(&(g->piece_current), board);
        if (global.game_next_no > 0)
            engine_draw_next_pieces(g);
        if (global.game_can_hold)
            engine_draw_hold(g);
        engine_draw_score(g);
        engine_draw_info(g);
        break;

    case PAUSED:
        engine_draw_board(&(g->board));
        engine_draw_pause();
        engine_draw_info(g); /* refresh the current time */
        break;

    case GAME_OVER:
        engine_draw_board(&(g->board));
        engine_draw_gameover();
        engine_draw_info(g);
        break;

    case HELP:
        engine_draw_board(&(g->board));
        engine_draw_info(g);
        engine_draw_help();
        break;

    case HSCORES:
        engine_draw_board(&(g->board));
        engine_draw_info(g);
        engine_draw_hscores();
        break;

    default: /* Umm... Nothing, I guess...? */ break;
    }
    wnoutrefresh(board);
    doupdate();
}
예제 #2
0
파일: main.c 프로젝트: hy0kl/yetris
/** Main entry point for the game. I kept it as simple as I could. */
int main(int argc, char* argv[])
{
	global = new_globals();

	config_handle();
	args_handle(argc, argv);

	engine_init();
	atexit(engine_exit); /* no need to call it when quitting */

	game_s game = new_game();
	engine_draw(&game);

	while (!game.quit)
	{
		int c = engine_get_input(game.speed);

		game_handle_input(&game, c);
		game_update(&game);

		/* THIS WILL BE UNCOMMENTED SOON */
		/* if (game.show_help) */
		/* { */
		/* 	engine_draw_help(); */
		/* 	engine_wait_for_keypress(); */
		/* 	game.show_help = false; */
		/* } */
		if (game.is_over)
		{
			game_over(&game);
			engine_draw_gameover(&game);
			engine_wait_for_keypress();
			game = new_game();
		}
		engine_draw(&game);
	}

	return EXIT_SUCCESS;
}