mirror of
https://git.squeakyrat.moe/petratc/
synced 2026-11-05 02:45:43 +01:00
changed gameguess a bit and i think i touched one other file idk
This commit is contained in:
1 parent
b36a541862
commit
1bac6b527b
3 files changed
+160
-22
No files matched your search
@@ -57,5 +57,4 @@ void gameclicker(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop();
|
stop();
|
||||||
printf("yeah");
|
|
||||||
}
|
}
|
||||||
+156
-17
@@ -1,31 +1,170 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <ncurses.h>
|
||||||
#include "../rat.h"
|
#include "../rat.h"
|
||||||
|
|
||||||
|
#define boxw 45
|
||||||
|
#define boxh 25
|
||||||
|
#define maxhistory 4
|
||||||
|
|
||||||
|
static int wrapprint(WINDOW *win, int row, int col, int maxwidth, const char *msg){
|
||||||
|
|
||||||
|
char copy[256];
|
||||||
|
strncpy(copy, msg, sizeof(copy));
|
||||||
|
copy[sizeof(copy)-1] = '\0';
|
||||||
|
|
||||||
|
char line[256] = "";
|
||||||
|
char *word = strtok(copy, " ");
|
||||||
|
while(word){
|
||||||
|
int linelen = strlen(line);
|
||||||
|
int wordlen = strlen(word);
|
||||||
|
int extra = (linelen > 0) ? 1 : 0;
|
||||||
|
if(linelen + extra + wordlen > maxwidth){
|
||||||
|
mvwprintw(win, row++, col, "%s", line);
|
||||||
|
line[0] = '\0';
|
||||||
|
linelen = 0;
|
||||||
|
extra = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(linelen > 0) strcat(line, " ");
|
||||||
|
strcat(line, word);
|
||||||
|
|
||||||
|
word = strtok(NULL, " ");
|
||||||
|
}
|
||||||
|
if(strlen(line) > 0){
|
||||||
|
mvwprintw(win, row++, col, "%s", line);
|
||||||
|
}
|
||||||
|
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void drawwin(WINDOW *win, int artpick, const char *msg, int history[], int histcount){
|
||||||
|
|
||||||
|
werase(win);
|
||||||
|
box(win, 0, 0);
|
||||||
|
|
||||||
|
int row = 1;
|
||||||
|
char artcopy[256];
|
||||||
|
strncpy(artcopy, ratart[artpick], sizeof(artcopy));
|
||||||
|
artcopy[sizeof(artcopy)-1] = '\0';
|
||||||
|
|
||||||
|
char *line = strtok(artcopy, "\n");
|
||||||
|
while(line){
|
||||||
|
mvwprintw(win, row++, 2, "%s", line);
|
||||||
|
line = strtok(NULL, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
row++;
|
||||||
|
wrapprint(win, row, 2, boxw - 4, msg);
|
||||||
|
|
||||||
|
int inputrow = boxh - 3;
|
||||||
|
|
||||||
|
|
||||||
|
for(int i = 0; i < histcount; i++){
|
||||||
|
mvwprintw(win, inputrow - histcount + i, 2, "%d", history[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
wrefresh(win);
|
||||||
|
}
|
||||||
|
|
||||||
void gameguess(){
|
void gameguess(){
|
||||||
int guess;
|
|
||||||
int solved = 0;
|
|
||||||
int range = 100;
|
|
||||||
|
|
||||||
int correct = (rand() % (range + 1));
|
int guess;
|
||||||
|
int solved = 0;
|
||||||
|
int range = 100;
|
||||||
|
|
||||||
printf("let's play a game, squeak!~ you gues a number between 0 and %d!\n", range);
|
int correct = (rand() % (range + 1));
|
||||||
|
|
||||||
|
int history[maxhistory];
|
||||||
|
int histcount = 0;
|
||||||
|
|
||||||
while(solved != 1){
|
static int initialized = 0;
|
||||||
|
if(initialized == 0){ initscr(); }else{ refresh(); }
|
||||||
|
++initialized;
|
||||||
|
|
||||||
if(scanf("%d", &guess) != 1){
|
noecho();
|
||||||
while(getchar() != '\n'); //flush the bad input here too
|
cbreak();
|
||||||
continue;
|
curs_set(0);
|
||||||
}
|
|
||||||
|
|
||||||
if(guess < correct){
|
WINDOW *win = newwin(boxh, boxw, 1, 1);
|
||||||
printf("number too low try again\n");
|
|
||||||
}else if(guess > correct){
|
|
||||||
printf("number too high try again\n");
|
|
||||||
}else {printf("yes!! correct! squeaaakk!~\n"); solved = 1;}
|
|
||||||
}
|
|
||||||
|
|
||||||
addstat(&rat.fun);
|
char msg[96];
|
||||||
|
snprintf(msg, sizeof(msg), "let's play a game, squeak!~ you gues a number between 0 and %d!", range);
|
||||||
|
drawwin(win, 4, msg, history, histcount);
|
||||||
|
|
||||||
|
int quitgame = 0;
|
||||||
|
|
||||||
|
while(solved != 1){
|
||||||
|
|
||||||
|
echo();
|
||||||
|
char buf[16];
|
||||||
|
mvwgetnstr(win, boxh - 3, 2, buf, sizeof(buf) - 1);
|
||||||
|
noecho();
|
||||||
|
|
||||||
|
if((buf[0] == 'q' || buf[0] == 'Q') && buf[1] == '\0'){
|
||||||
|
drawwin(win, 2, "are you suuure you don't wanna play anymoreee~?", history, histcount);
|
||||||
|
|
||||||
|
echo();
|
||||||
|
char confirm[16];
|
||||||
|
mvwgetnstr(win, boxh - 3, 2, confirm, sizeof(confirm) - 1);
|
||||||
|
noecho();
|
||||||
|
|
||||||
|
if((confirm[0] == 'q' || confirm[0] == 'Q' || confirm[0] == 'y' || confirm[0] == 'Y') && confirm[1] == '\0'){
|
||||||
|
quitgame = 1;
|
||||||
|
break;
|
||||||
|
} else if((confirm[0] == 'n' || confirm[0] == 'N') && confirm[1] == '\0'){
|
||||||
|
drawwin(win, 4, msg, history, histcount);
|
||||||
|
continue;
|
||||||
|
} else if(sscanf(confirm, "%d", &guess) != 1){
|
||||||
|
drawwin(win, 4, "that's not a number, try again", history, histcount);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else if(sscanf(buf, "%d", &guess) != 1){
|
||||||
|
drawwin(win, 4, "that's not a number, try again", history, histcount);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//this is too "complicated" for no reason at all
|
||||||
|
|
||||||
|
int diff = abs(guess - correct);
|
||||||
|
int artpick;
|
||||||
|
if(diff <= 10){
|
||||||
|
artpick = 3;
|
||||||
|
} else if(diff > 30){
|
||||||
|
artpick = 4;
|
||||||
|
} else {
|
||||||
|
artpick = rand() % 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(guess < correct){
|
||||||
|
if(histcount < maxhistory){
|
||||||
|
history[histcount++] = guess;
|
||||||
|
} else {
|
||||||
|
for(int i = 0; i < maxhistory - 1; i++) history[i] = history[i+1];
|
||||||
|
history[maxhistory-1] = guess;
|
||||||
|
}
|
||||||
|
drawwin(win, artpick, "number too low try again", history, histcount);
|
||||||
|
}else if(guess > correct){
|
||||||
|
if(histcount < maxhistory){
|
||||||
|
history[histcount++] = guess;
|
||||||
|
} else {
|
||||||
|
for(int i = 0; i < maxhistory - 1; i++) history[i] = history[i+1];
|
||||||
|
history[maxhistory-1] = guess;
|
||||||
|
}
|
||||||
|
drawwin(win, artpick, "number too high try again", history, histcount);
|
||||||
|
}else {
|
||||||
|
drawwin(win, artpick, "yes!! correct! squeaaakk!~", history, histcount);
|
||||||
|
solved = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!quitgame){
|
||||||
|
usleep(2000000);
|
||||||
|
addstat(&rat.fun);
|
||||||
|
}
|
||||||
|
|
||||||
|
delwin(win);
|
||||||
|
endwin();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ void printrat(WINDOW *win){
|
|||||||
mvwprintw(win, row++, 2, "health: %.2f", rat.health);
|
mvwprintw(win, row++, 2, "health: %.2f", rat.health);
|
||||||
|
|
||||||
row++;
|
row++;
|
||||||
mvwprintw(win, row++, 2, "1: play a game! (fun up)");
|
mvwprintw(win, row++, 2, "1: play guess the number! (fun up)");
|
||||||
mvwprintw(win, row++, 2, "2: go to the maze (hunger up)");
|
mvwprintw(win, row++, 2, "2: go to the maze (hunger up)");
|
||||||
mvwprintw(win, row++, 2, "4: take a shower! (clean up)");
|
mvwprintw(win, row++, 2, "4: take a shower! (clean up)");
|
||||||
mvwprintw(win, row++, 2, "5: clicker the cheese! (all up)");
|
mvwprintw(win, row++, 2, "5: clicker the cheese! (all up)");
|
||||||
@@ -168,13 +168,13 @@ int truing = 1;
|
|||||||
case '2':
|
case '2':
|
||||||
endwin();
|
endwin();
|
||||||
gamemaze();
|
gamemaze();
|
||||||
printf("the maze is really dark squeak...\n\n");
|
//printf("the maze is really dark squeak...\n\n");
|
||||||
refresh();
|
refresh();
|
||||||
break;
|
break;
|
||||||
case '4':
|
case '4':
|
||||||
endwin();
|
endwin();
|
||||||
gamecatch();
|
gamecatch();
|
||||||
printf("your rat feels cleaner!\n\n");
|
//printf("your rat feels cleaner!\n\n");
|
||||||
refresh();
|
refresh();
|
||||||
break;
|
break;
|
||||||
case '5':
|
case '5':
|
||||||
@@ -185,7 +185,7 @@ int truing = 1;
|
|||||||
case '9': break;
|
case '9': break;
|
||||||
case '0': truing = 0; break;
|
case '0': truing = 0; break;
|
||||||
}
|
}
|
||||||
|
// i will put those printfs where the squeaks go but i have no clue how to do that today
|
||||||
if(truing) printrat(win);
|
if(truing) printrat(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user