aboutsummaryrefslogtreecommitdiff
path: root/games/gamecatch.c
diff options
context:
space:
mode:
Diffstat (limited to 'games/gamecatch.c')
-rw-r--r--games/gamecatch.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/games/gamecatch.c b/games/gamecatch.c
index 239c42e..0680027 100644
--- a/games/gamecatch.c
+++ b/games/gamecatch.c
@@ -34,13 +34,13 @@
// i just realized this is basically cmatrix with a little guy at the bottom
*/
-#define width 40
-#define height getmaxy(stdscr)
#define maxdrops 70
static int running;
static int won;
static int howmany;
+static int width;
+static int height;
typedef struct{
@@ -85,17 +85,11 @@ static void stop() {
void gamecatch(){
srand(time(NULL)); //@sagucs hey
-
- static int initialized = 0;
- if(initialized == 0){ initscr();}else{refresh();} // turns out you don't wanna call initscr() many times per session so do this because it glitches otherwise
- ++initialized;
- howmany = 0;
- noecho();
- cbreak();
- nodelay(stdscr, TRUE);
- keypad(stdscr, TRUE);
- curs_set(0);
+ WINDOW *win = ratdrawbox();
+ howmany = 0;
+ width = 40;
+ height = getmaxy(win) - 2;
cursor curs = {width / 2, {"(>.<)_", "_(>.<)"}, 0};
@@ -123,18 +117,24 @@ void gamecatch(){
if (!running) break;
if (rand() % 10 < 3) spawndrops();
- clear();
-
- mvprintw(0, width + 2, "caught: %d/30", howmany);
- mvprintw(1, width + 2, "(catch 30 to win!)");
- mvprintw(2, width + 2, "move with A and D");
- mvprintw(3, width + 2, "or the or the corresponding arrows");
+ werase(win);
+ box(win, 0, 0);
+
+ mvwvline(win, 1, width + 1, ACS_VLINE, height);
+ mvwaddch(win, 0, width + 1, ACS_TTEE);
+ mvwaddch(win, height + 1, width + 1, ACS_BTEE);
+ //this should do it
+
+ mvwprintw(win, 1, width + 3, "caught: %d/30", howmany);
+ mvwprintw(win, 2, width + 3, "(catch 30 to win!)");
+ mvwprintw(win, 3, width + 3, "move with A and D");
+ mvwprintw(win, 4, width + 3, "or the or the corresponding arrows");
for (int i = 0; i < maxdrops; i++) {
if (droop[i].active) {
- mvaddstr(droop[i].posy, droop[i].posx, droop[i].symbol);
+ mvwaddstr(win, droop[i].posy + 1, droop[i].posx + 1, droop[i].symbol);
droop[i].posy++;
if (droop[i].posy >= height) droop[i].active = 0;
@@ -148,9 +148,9 @@ void gamecatch(){
}
}
- mvaddstr(height - 1, curs.posx, curs.face[curs.direction]);
+ mvwaddstr(win, height, curs.posx + 1, curs.face[curs.direction]);
- refresh();
+ wrefresh(win);
usleep(100000);
}