summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2011-01-05 01:10:05 +0100
committerReiner Herrmann <reiner@reiner-h.de>2011-01-05 01:10:05 +0100
commit5846e235529688c11d6d95395e7e4c4d3ccaa3ba (patch)
tree92657c7b1968582e113260af54cbbd775accc287 /src
parent79467dcd9fd246354afbca937d912d620795500d (diff)
added first game states and some pseudo code
Diffstat (limited to 'src')
-rw-r--r--src/display.c1
-rw-r--r--src/game.c49
-rw-r--r--src/game.h2
3 files changed, 52 insertions, 0 deletions
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 <stdlib.h>
#include <stdbool.h>
#include <time.h>
+#include <unistd.h>
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