Fixed functions to initialize the game and now initializing it from main.
This commit is contained in:
parent
73d79dcc92
commit
ed52f72ff0
@ -6,18 +6,67 @@
|
|||||||
#include "deck.h"
|
#include "deck.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
|
|
||||||
void init_curses() {
|
void initialize_curses() {
|
||||||
setlocale(LC_ALL, ""); /* supporting unicode characters */
|
setlocale(LC_ALL, ""); /* supporting unicode characters */
|
||||||
initscr(); /* initialize the terminal in curses mode */
|
initscr(); /* initialize the terminal in curses mode */
|
||||||
raw(); /* disable line buffers */
|
raw(); /* disable line buffers */
|
||||||
noecho(); /* character echo is unnecessary */
|
noecho(); /* character echo is unnecessary */
|
||||||
keypad(stdscr, TRUE); /* enable F and arrow keys */
|
keypad(stdscr, TRUE); /* enable F and arrow keys */
|
||||||
start_color(); /* I want colors */
|
start_color(); /* I want colors */
|
||||||
curs_set(0); /* invisible cursor */
|
curs_set(FALSE); /* invisible cursor */
|
||||||
|
|
||||||
init_pair(1, COLOR_BLACK, COLOR_WHITE);
|
init_pair(1, COLOR_BLACK, COLOR_WHITE);
|
||||||
init_pair(2, COLOR_RED, COLOR_WHITE);
|
init_pair(2, COLOR_RED, COLOR_WHITE);
|
||||||
init_pair(3, COLOR_WHITE, COLOR_BLUE);
|
init_pair(3, COLOR_WHITE, COLOR_BLUE);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void end_curses() {
|
||||||
|
endwin();
|
||||||
|
puts("Game finished.");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void initialize_game() {
|
||||||
|
struct deck *deck = NULL;
|
||||||
|
int pressed_key;
|
||||||
|
|
||||||
|
mvprintw(11, 27, "Welcome to tty-solitaire.");
|
||||||
|
mvprintw(12, 19, "Press the space bar to play or q to quit.");
|
||||||
|
while (1) {
|
||||||
|
switch (pressed_key = getch()) {
|
||||||
|
case KEY_SPACEBAR:
|
||||||
|
clear();
|
||||||
|
refresh();
|
||||||
|
assume_default_colors(COLOR_WHITE, COLOR_GREEN);
|
||||||
|
draw_empty_stacks();
|
||||||
|
allocate_deck(&deck);
|
||||||
|
initialize_deck(deck);
|
||||||
|
set_deck_stacks_coordinates(deck);
|
||||||
|
fill_deck(deck);
|
||||||
|
shuffle_deck(deck);
|
||||||
|
deal_cards(deck);
|
||||||
|
draw_game(deck);
|
||||||
|
getchar();
|
||||||
|
end_curses();
|
||||||
|
end_game(deck);
|
||||||
|
return;
|
||||||
|
case 'q':
|
||||||
|
case 'Q':
|
||||||
|
end_curses();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void end_game(struct deck *deck) {
|
||||||
|
delete_deck(deck);
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_empty_stacks() {
|
void draw_empty_stacks() {
|
||||||
@ -50,24 +99,6 @@ void draw_empty_stacks() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initialize_game() {
|
|
||||||
struct deck *deck = NULL;
|
|
||||||
|
|
||||||
clear();
|
|
||||||
refresh();
|
|
||||||
assume_default_colors(COLOR_WHITE, COLOR_GREEN);
|
|
||||||
draw_empty_stacks();
|
|
||||||
allocate_deck(&deck);
|
|
||||||
initialize_deck(deck);
|
|
||||||
set_deck_stacks_coordinates(deck);
|
|
||||||
fill_deck(deck);
|
|
||||||
shuffle_deck(deck);
|
|
||||||
deal_cards(deck);
|
|
||||||
draw_game(deck);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *card_suit(enum suit suit) {
|
char *card_suit(enum suit suit) {
|
||||||
char *card_suit;
|
char *card_suit;
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
#include "card.h"
|
#include "card.h"
|
||||||
#include "deck.h"
|
#include "deck.h"
|
||||||
|
|
||||||
|
#define KEY_SPACEBAR ' '
|
||||||
|
|
||||||
#define EMPTY_STACKS_NUMBER 13
|
#define EMPTY_STACKS_NUMBER 13
|
||||||
|
|
||||||
#define DIAMONDS_SYMBOL "\u2666"
|
#define DIAMONDS_SYMBOL "\u2666"
|
||||||
@ -15,9 +17,11 @@
|
|||||||
#define RED_ON_WHITE 2
|
#define RED_ON_WHITE 2
|
||||||
#define WHITE_ON_BLUE 3
|
#define WHITE_ON_BLUE 3
|
||||||
|
|
||||||
void init_curses();
|
void initialize_curses();
|
||||||
void draw_empty_stacks();
|
void end_curses();
|
||||||
void initialize_game();
|
void initialize_game();
|
||||||
|
void end_game();
|
||||||
|
void draw_empty_stacks();
|
||||||
char *card_suit(enum suit);
|
char *card_suit(enum suit);
|
||||||
char *card_value(enum value);
|
char *card_value(enum value);
|
||||||
void draw_value(struct card *);
|
void draw_value(struct card *);
|
||||||
|
@ -4,21 +4,9 @@
|
|||||||
#include "../lib/display.h"
|
#include "../lib/display.h"
|
||||||
|
|
||||||
int main(int argc, const char *argv[]) {
|
int main(int argc, const char *argv[]) {
|
||||||
char message[] = "Welcome to tty-solitaire.";
|
initialize_curses();
|
||||||
int row_number, column_number;
|
|
||||||
|
|
||||||
init_curses();
|
|
||||||
|
|
||||||
getmaxyx(stdscr, row_number, column_number);
|
|
||||||
mvprintw(row_number / 2 - 1,
|
|
||||||
(column_number - strlen(message)) / 2,
|
|
||||||
"%s\n",
|
|
||||||
message);
|
|
||||||
getch();
|
|
||||||
|
|
||||||
initialize_game();
|
initialize_game();
|
||||||
|
|
||||||
puts("Game finished.");
|
return(0);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user