mirror of
https://git.squeakyrat.moe/petratc/
synced 2026-11-04 18:35: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();
|
||||
printf("yeah");
|
||||
}
|
||||
+156
-17
@@ -1,31 +1,170 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <ncurses.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(){
|
||||
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){
|
||||
while(getchar() != '\n'); //flush the bad input here too
|
||||
continue;
|
||||
}
|
||||
noecho();
|
||||
cbreak();
|
||||
curs_set(0);
|
||||
|
||||
if(guess < correct){
|
||||
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;}
|
||||
}
|
||||
WINDOW *win = newwin(boxh, boxw, 1, 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);
|
||||
|
||||
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, "4: take a shower! (clean up)");
|
||||
mvwprintw(win, row++, 2, "5: clicker the cheese! (all up)");
|
||||
@@ -168,13 +168,13 @@ int truing = 1;
|
||||
case '2':
|
||||
endwin();
|
||||
gamemaze();
|
||||
printf("the maze is really dark squeak...\n\n");
|
||||
//printf("the maze is really dark squeak...\n\n");
|
||||
refresh();
|
||||
break;
|
||||
case '4':
|
||||
endwin();
|
||||
gamecatch();
|
||||
printf("your rat feels cleaner!\n\n");
|
||||
//printf("your rat feels cleaner!\n\n");
|
||||
refresh();
|
||||
break;
|
||||
case '5':
|
||||
@@ -185,7 +185,7 @@ int truing = 1;
|
||||
case '9': 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);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user