diff --git a/src/game.c b/src/game.c index 67040e4..00b4880 100644 --- a/src/game.c +++ b/src/game.c @@ -11,7 +11,6 @@ #include "deck.h" #include "draw.h" #include "cursor.h" -#include "curses.h" #include "common.h" static int foundation_begin_x(int x) { @@ -22,7 +21,7 @@ static int foundation_begin_x(int x) { case 3: return(FOUNDATION_3_BEGIN_X); default: endwin(); - end_game(); + game_end(); assert(false && "invalid stack"); } } @@ -38,7 +37,7 @@ static int maneuvre_begin_x(int x) { case 6: return(MANEUVRE_6_BEGIN_X); default: endwin(); - end_game(); + game_end(); assert(false && "maneuvre_begin_x called x < 0 || x > 6"); } } @@ -160,13 +159,9 @@ static void deal_cards(struct deck *deck) { } } -void initialize_game() { - clear(); - refresh(); - +void game_init() { allocate_cursor(&cursor); initialize_cursor(cursor); - allocate_deck(&deck); initialize_deck(deck); @@ -188,7 +183,7 @@ void initialize_game() { draw_deck(deck); } -void end_game() { - free_deck(deck); +void game_end() { free_cursor(cursor); + free_deck(deck); } diff --git a/src/game.h b/src/game.h index 5913ce9..3c524a3 100644 --- a/src/game.h +++ b/src/game.h @@ -35,7 +35,7 @@ bool maneuvre_stack(struct stack *); bool valid_move(struct stack *, struct stack *); void move_card(struct stack **, struct stack **); void greet_player(); -void initialize_game(); -void end_game(); +void game_init(); +void game_end(); #endif diff --git a/src/keyboard.c b/src/keyboard.c index 8a7b87f..7556b7f 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -6,7 +6,6 @@ #include "game.h" #include "cursor.h" #include "draw.h" -#include "curses.h" static struct stack **cursor_stack(struct cursor *cursor) { if (cursor->y == CURSOR_BEGIN_Y) { @@ -20,7 +19,7 @@ static struct stack **cursor_stack(struct cursor *cursor) { case CURSOR_INVALID_SPOT_X: return(NULL); default: endwin(); - end_game(); + game_end(); assert(false && "invalid stack"); } } else { @@ -34,7 +33,7 @@ static struct stack **cursor_stack(struct cursor *cursor) { case CURSOR_MANEUVRE_6_X: return(&(deck->maneuvre[6])); default: endwin(); - end_game(); + game_end(); assert(false && "invalid stack"); } } @@ -122,7 +121,7 @@ static void handle_card_movement(struct cursor *cursor) { case 'q': case 'Q': endwin(); - end_game(); + game_end(); exit(0); } } diff --git a/src/ttysolitaire.c b/src/ttysolitaire.c index 0c2ab88..de28df8 100644 --- a/src/ttysolitaire.c +++ b/src/ttysolitaire.c @@ -9,15 +9,14 @@ const char *program_name; int main(int argc, const char *argv[]) { program_name = *argv; - int key; - setlocale(LC_ALL, "en_US.utf-8"); /* Support unicode characters. */ + setlocale(LC_ALL, ""); /* Support unicode characters. */ initscr(); - raw(); /* Disable line buffers. */ + raw(); /* Disable line buffers. */ noecho(); - keypad(stdscr, TRUE); /* Enable arrow keys. */ - start_color(); /* I want colors. */ - curs_set(FALSE); /* Invisible cursor. */ + keypad(stdscr, TRUE); /* Give us keyboard key symbols. */ + start_color(); + curs_set(FALSE); /* We have our own cursor. */ set_escdelay(0); assume_default_colors(COLOR_WHITE, COLOR_GREEN); init_pair(1, COLOR_BLACK, COLOR_WHITE); @@ -27,27 +26,29 @@ int main(int argc, const char *argv[]) { draw_greeting(); - while (key != KEY_SPACEBAR) { + int key; + do { switch (key = getch()) { case KEY_SPACEBAR: - initialize_game(); + clear(); + refresh(); + game_init(); break; case 'q': case 'Q': endwin(); return(0); } - } + } while (key != KEY_SPACEBAR); - while (1) { + do { if ((key = getch()) == 'q' || key == 'Q') { endwin(); - end_game(); - return(0); + game_end(); } else { handle_keyboard_event(key); } - } + } while (key != 'q' && key != 'Q'); return(0); }