blob: c47d2d54f877391576cf2435ccacca8216322782 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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();
}
|