aboutsummaryrefslogtreecommitdiff
path: root/games
diff options
context:
space:
mode:
authordavid <[email protected]>2026-05-05 10:09:21 -0300
committerdavid <[email protected]>2026-05-05 10:09:21 -0300
commita7f7b091f41410ac10ad59730ebb2f235eb2bb16 (patch)
treeab311bc778863161ce9f56857299adcf37f0da20 /games
parentc96ea5f3ebf506794e3222a277f88036618e7e35 (diff)
downloadpetratc-a7f7b091f41410ac10ad59730ebb2f235eb2bb16.tar.gz
petratc-a7f7b091f41410ac10ad59730ebb2f235eb2bb16.zip
started maze game it's just a walking simulator for now
Diffstat (limited to 'games')
-rw-r--r--games/gamecatch.c8
-rw-r--r--games/gamemaze.c93
2 files changed, 97 insertions, 4 deletions
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();
+}