#include "display.h" #include #include "card.h" void display_draw_card(WINDOW *w, const uint32_t row, const uint32_t col, const card c) { mvwaddch(w, row, col, ACS_ULCORNER); // Upper left corner mvwhline(w, row, col+1, ACS_HLINE, 5); // Upper horizontal line mvwaddch(w, row, col+6, ACS_URCORNER); // Upper right corner mvwvline(w, row+1, col, ACS_VLINE, 3); // Left vertical line mvwvline(w, row+1, col+6, ACS_VLINE, 3); // Right vertical line mvwaddch(w, row+4, col, ACS_LLCORNER); // Lower left corner mvwhline(w, row+4, col+1, ACS_HLINE, 5); // Lower horizontal line mvwaddch(w, row+4, col+6, ACS_LRCORNER); // Lower right corner mvwprintw(w, row+1, col+1, " %3d ", c); // Card number, 3 digits wide, filled with spaces, if number has fewer digits switch (card_get_points(c)) { case 7: mvwprintw(w, row+2, col+1, "** **"); mvwprintw(w, row+3, col+1, " *** "); break; case 5: mvwprintw(w, row+2, col+1, "* * *"); mvwprintw(w, row+3, col+1, " * * "); break; case 3: mvwprintw(w, row+2, col+1, " * * "); mvwprintw(w, row+3, col+1, " * "); break; case 2: mvwprintw(w, row+2, col+1, " * * "); mvwprintw(w, row+3, col+1, " "); break; default: mvwprintw(w, row+2, col+1, " * "); mvwprintw(w, row+3, col+1, " "); } } void display_init(void) { initscr(); // Start curses mode raw(); // Line buffering disabled keypad(stdscr, true); // We get F1, F2 etc.. noecho(); // Don't echo() while we do getch curs_set(0); // Make the cursor invisible clear(); refresh(); for (int i = 0; i < 105; i++) { display_draw_card(stdscr, 0, 0, i+1); usleep(75000); refresh(); } } void display_fini(void) { endwin(); // End curses mode }