From 5846e235529688c11d6d95395e7e4c4d3ccaa3ba Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Wed, 5 Jan 2011 01:10:05 +0100 Subject: added first game states and some pseudo code --- src/display.c | 1 + src/game.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/game.h | 2 ++ 3 files changed, 52 insertions(+) diff --git a/src/display.c b/src/display.c index 4504a8f..5d6317b 100644 --- a/src/display.c +++ b/src/display.c @@ -59,6 +59,7 @@ void display_init(void) initscr(); // Start curses mode raw(); // Line buffering disabled keypad(stdscr, true); // We get F1, F2 etc.. + nodelay(stdscr, true); // Non-blocking input noecho(); // Don't echo() while we do getch curs_set(0); // Make the cursor invisible diff --git a/src/game.c b/src/game.c index a7e33be..afb8fa0 100644 --- a/src/game.c +++ b/src/game.c @@ -3,6 +3,7 @@ #include #include #include +#include void init_mainstack(card* stack, const uint32_t size) { @@ -26,6 +27,8 @@ void start_game(void) bool running = true; int cards = MAX_CARD - MIN_CARD + 1; card mainstack[cards]; + gamestate state = STATE_DEALCARDS; + int input; srand(time(0)); @@ -34,7 +37,53 @@ void start_game(void) // main game loop while(running) { + input = getch(); // ERR if no key pressed + switch(state) + { + case STATE_DEALCARDS: // deal cards to players + // dealcards(mainstack); + state = STATE_SELECTCARD; + break; + case STATE_SELECTCARD: // player has to select own card + // if(input != ERR) + // cardselect(input); + // if(input == '\n') + // { + // get_selected_card(); + // state = STATE_WAIT_OPPONENTCARDS + // } + break; + case STATE_WAIT_OPPONENTCARDS: // wait until all opponents have selected their cards + // if(opponent_cards_rdy()) + // { + // if(lowest_card_player() == own_id) + // state = STATE_SELECTSTACK; + // else + // state = STATE_WAIT_OPPONENTSTACK; + // } + break; + case STATE_WAIT_OPPONENTSTACK: // wait until opponent has selected a stack + break; + case STATE_SELECTSTACK: // player has to select a stack + //if(input != ERR) + // stackselect(input); + //if(input == '\n') + //{ + // get_selected_stack(); + // update_stack(); + // + // if(players_remaining()) + // state = STATE_WAIT_OPPONENTSTACK; + // else + // state = STATE_SELECTCARD; + //} + break; + default: + assert(false); // should never happen + } + + usleep(1000); } } diff --git a/src/game.h b/src/game.h index 16743ea..b8e0c90 100644 --- a/src/game.h +++ b/src/game.h @@ -4,6 +4,8 @@ #define MIN_CARD 1 #define MAX_CARD 104 +enum gamestate { STATE_DEALCARDS, STATE_SELECTCARD, STATE_WAIT_OPPONENTCARDS, STATE_WAIT_OPPONENTSTACK, STATE_SELECTSTACK } + void start_game(void); #endif // OXEN_GAME_H -- cgit v1.2.3