started maze game it's just a walking simulator for now

This commit is contained in:
david committed 2026-05-05 10:09:21 -03:00
1 parent c96ea5f3eb
commit a7f7b091f4
4 files changed
+100 -5

No files matched your search

+1
View File
@@ -3,5 +3,6 @@
void gameguess(void);
void gamecatch(void);
void gamemaze(void);
#endif
+4 -4
View File
@@ -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();
+93
View File
@@ -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();
}
+2 -1
View File
@@ -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;