diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | clicker-ncurses.c | 52 | ||||
-rw-r--r-- | clicker-ncurses.h | 6 |
3 files changed, 23 insertions, 37 deletions
@@ -3,7 +3,7 @@ .SUFFIXES: CC = cc CFLAGS = -Wall -LDLIBS = -lncurses +LDLIBS = -lcurses all: clicker-ncurses clicker-ncurses: clicker-ncurses.o diff --git a/clicker-ncurses.c b/clicker-ncurses.c index 8decf8f..23d3a4d 100644 --- a/clicker-ncurses.c +++ b/clicker-ncurses.c @@ -3,7 +3,8 @@ #include <stdlib.h> #include <unistd.h> -#include <ncurses.h> +/* TODO: check for compatibility with different implementations */ +#include <curses.h> #include "clicker-ncurses.h" @@ -40,7 +41,7 @@ main (void) /* Initialize the structure and set the values */ struct game *cur_game = malloc(sizeof(struct game)); cur_game->click = 1; - cur_game->multiplifier = 2; + cur_game->multiplifier = 128; /* The main loop that also catches user input */ int ch = 0; @@ -49,54 +50,45 @@ main (void) switch (ch) { case ' ': - set_score(cur_game, get_score(cur_game) + get_click(cur_game)); + set_score(cur_game, cur_game->score + cur_game->click); break; case 'q': goto endwin; case 'u': - if (get_score(cur_game) >= 2 * get_multiplifier(cur_game)) + if (cur_game->score >= cur_game->click * cur_game->multiplifier) { - 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)); + set_score(cur_game, 0); + ++cur_game->click; + ++cur_game->multiplifier; } break; } + + if (cur_game->score < 0) + { + set_score(cur_game, 0); + } } /* Remove the main window and exit */ endwin: endwin(); printf("You have got %d points.\n", cur_game->score); + /* TODO: deal with valgrind complaints */ + free(cur_game); exit(EXIT_SUCCESS); } -int -get_score (struct game *game) -{ - return game->score; -} - void set_score (struct game *game, int score) { + int score_len = snprintf(NULL, 0, "%d", game->score); + for (int i = 0; i <= score_len; ++i) + { + mvaddch(3, i + 1, ' '); + refresh(); + } + 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; -} diff --git a/clicker-ncurses.h b/clicker-ncurses.h index b7c97c2..cbaf969 100644 --- a/clicker-ncurses.h +++ b/clicker-ncurses.h @@ -5,10 +5,4 @@ struct game 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); |