diff options
| -rw-r--r-- | defs.h | 1 | ||||
| -rw-r--r-- | games/gamecatch.c | 8 | ||||
| -rw-r--r-- | games/gamemaze.c | 93 | ||||
| -rw-r--r-- | petratc.c | 3 |
4 files changed, 100 insertions, 5 deletions
@@ -3,5 +3,6 @@ void gameguess(void); void gamecatch(void); +void gamemaze(void); #endif diff --git a/games/gamecatch.c b/games/gamecatch.c index 836dca4..239c42e 100644 --- a/games/gamecatch.c +++ b/games/gamecatch.c @@ -38,9 +38,9 @@ #define height getmaxy(stdscr) #define maxdrops 70 -int running; -int won; -int howmany; +static int running; +static int won; +static int howmany; typedef struct{ @@ -71,7 +71,7 @@ void spawndrops() { } } -void stop() { +static void stop() { clear(); refresh(); endwin(); diff --git a/games/gamemaze.c b/games/gamemaze.c new file mode 100644 index 0000000..c47d2d5 --- /dev/null +++ b/games/gamemaze.c @@ -0,0 +1,93 @@ +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <unistd.h> +#include <ncurses.h> +#include "../rat.h" + +/* +// i'm probably gonna use a loop erased random walk algorithm +//the screen will start as 100% walls then slowly build a path +//(i have no idea how many resources this will take, if it's slow i'll ask grok to multithread it) +// +// a couple ammount of cheeses will spawn in places where there are no walls +// eating cheeses will add to the base addstat() but addstat() only will be called if 1 cheese is eaten +// idk what else to do here. +// you start at the top and end at the bottom if i ever wanna automate taking care of the rat +*/ + +#define width getmaxx(stdscr) +#define height getmaxy(stdscr) + +static int running; +static int won; +static int found; + +typedef struct{ + + int posy; + int posx; + char *face[1]; + +}cursor; + +static void stop() { + clear(); + refresh(); + endwin(); + if(won){addstat(&rat.hunger); addstat(&rat.fun); printf("the rat feels less hungry...\n\n");} + won = 0; + found = 0; + running = 0; +} +//yes i stole the code from gamecatch shut up it works + + + + + +void gamemaze(){ + + srand(time(NULL)); + static int initialized = 0; + if(initialized == 0){ initscr();}else{refresh();} + ++initialized; + + found = 0; + + noecho(); + cbreak(); + nodelay(stdscr, TRUE); + keypad(stdscr, TRUE); + curs_set(0); + + cursor curs = {0, 0, {"@"}}; + + running = 1; + + while (running) { + if (!running) stop(); + int ch = getch(); + switch (ch) { + case 'q': case 'Q': stop(); break; + case 'a': case 'A': case KEY_LEFT: + curs.posx -= 1; break; + case 'd': case 'D': case KEY_RIGHT: + curs.posx += 1; break; + case 'w': case 'W': case KEY_UP: + curs.posy -= 1; break; + case 's': case 'S': case KEY_DOWN: + curs.posy += 1; break; + } + + if (!running) break; + clear(); + + mvaddstr(curs.posy, curs.posx, curs.face[0]); + + refresh(); + usleep(50000); + } + +stop(); +} @@ -108,7 +108,7 @@ int truing = 1; printrat(); while(truing){ - printf("1: play a game! (fun up), 4: take a shower! (clean up), 9: print me!, 0: exit...\n"); + printf("1: play a game! (fun up), 2: go down to the maze... (hunger up), 4: take a shower! (clean up), 9: print me!, 0: exit...\n"); if(scanf("%d", &choice) != 1){ while(getchar() != '\n'); //flush the bad input if you're a bad boy and put q instead of 1 @@ -117,6 +117,7 @@ int truing = 1; switch(choice){ case 1: gameguess(); break; + case 2: gamemaze(); break; case 4: gamecatch(); break; case 9: printrat(); break; case 0: truing = 0; break; |
