#include #include #include #include struct game { int click; int multiplifier; int score; }; int get_score (struct game *game); void *set_score (struct game *game, int score); int get_click (struct game *game); void *set_click (struct game *game, int click); int get_multiplifier (struct game *game); int main (void) { /* Initialize NCurses screen and get the default window, stdscr */ if ( ! initscr() ) { printf("Too little amount of memory\n"); return 1; } /* This fixes the problem of input that shows up */ noecho(); /* Place a border with default settings (0 means default) */ border(0, 0, 0, 0, 0, 0, 0, 0); /* Get window size */ int sy, sx; getmaxyx(stdscr, sy, sx); /* Place a string onto the window in specified location */ char *name = "NCurses clicker"; mvprintw(0, sx / 2 - strlen(name) / 2, name); char *help = "[ ] - click, [q]uit, [u]pgrade"; mvprintw(sy - 2, sx / 2 - strlen(help) / 2, help); /* Refresh our window to include settings above */ refresh(); /* Initialize the structure and set the values */ struct game *cur_game = malloc(sizeof(struct game)); cur_game->click = 1; cur_game->multiplifier = 2; /* The main loop that also catches user input */ int ch = 0; while (ch = getch()) { if (ch == ' ') { set_score(cur_game, get_score(cur_game) + get_click(cur_game)); } if (ch == 'q') { break; } if (ch == 'u') { if (get_score(cur_game) >= 2 * get_multiplifier(cur_game)) { set_score(cur_game, get_score(cur_game) - get_click(cur_game) * 2); set_click(cur_game, get_click(cur_game) * get_multiplifier(cur_game)); } } } /* Remove the main window and exit */ endwin(); } int get_score (struct game *game) { return game->score; } void * set_score (struct game *game, int score) { game->score = score; mvprintw(3, 1, "%d", game->score); } int get_click (struct game *game) { return game->click; } void * set_click (struct game *game, int click) { game->click = click; } int get_multiplifier (struct game *game) { return game->multiplifier; }