Moved code into 'game' and 'util', removed unnecessary headers.

This commit is contained in:
Murilo Soares Pereira
2010-04-12 23:42:21 -03:00
parent 9459fc8242
commit e65e4e2875
10 changed files with 339 additions and 327 deletions
+31 -96
View File
@@ -1,103 +1,8 @@
#include <stdio.h>
#include <ncurses.h>
#include <malloc.h>
#include <string.h>
#include <locale.h>
#include "deck.h"
#include "display.h"
void initialize_curses() {
setlocale(LC_ALL, ""); /* supporting unicode characters */
initscr(); /* initialize the terminal in curses mode */
raw(); /* disable line buffers */
noecho(); /* character echo is unnecessary */
keypad(stdscr, TRUE); /* enable F and arrow keys */
start_color(); /* I want colors */
curs_set(FALSE); /* invisible cursor */
init_pair(1, COLOR_BLACK, COLOR_WHITE);
init_pair(2, COLOR_RED, COLOR_WHITE);
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() {
WINDOW **empty_stack;
empty_stack = malloc(EMPTY_STACKS_NUMBER * sizeof(**empty_stack));
empty_stack[0] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 1);
empty_stack[1] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 9);
empty_stack[2] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 25);
empty_stack[3] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 33);
empty_stack[4] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 41);
empty_stack[5] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 49);
empty_stack[6] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 1);
empty_stack[7] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 9);
empty_stack[8] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 17);
empty_stack[9] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 25);
empty_stack[10] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 33);
empty_stack[11] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 41);
empty_stack[12] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 49);
for (int i = 0; i < EMPTY_STACKS_NUMBER; i++) {
box(empty_stack[i], 0, 0);
wrefresh(empty_stack[i]);
delwin(empty_stack[i]);
}
free(empty_stack);
return;
}
#include "game.h"
char *card_suit(enum suit suit) {
char *card_suit;
@@ -140,6 +45,36 @@ char *card_value(enum value value) {
return(card_value);
}
void draw_empty_stacks() {
WINDOW **empty_stack;
empty_stack = malloc(EMPTY_STACKS_NUMBER * sizeof(**empty_stack));
empty_stack[0] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 1);
empty_stack[1] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 9);
empty_stack[2] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 25);
empty_stack[3] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 33);
empty_stack[4] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 41);
empty_stack[5] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 1, 49);
empty_stack[6] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 1);
empty_stack[7] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 9);
empty_stack[8] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 17);
empty_stack[9] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 25);
empty_stack[10] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 33);
empty_stack[11] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 41);
empty_stack[12] = newwin(FRAME_HEIGHT, FRAME_WIDTH, 7, 49);
for (int i = 0; i < EMPTY_STACKS_NUMBER; i++) {
box(empty_stack[i], 0, 0);
wrefresh(empty_stack[i]);
delwin(empty_stack[i]);
}
free(empty_stack);
return;
}
void draw_value(struct card *card) {
mvwprintw(card->frame->shape, 0, 0, card_value(card->value));
mvwprintw(card->frame->shape, 4,