mirror of
https://git.squeakyrat.moe/petratc/
synced 2026-11-05 02:45:43 +01:00
i remembered my password
This commit is contained in:
1 parent
acb78f0835
commit
f21bfbfacc
1 file changed
+72
-9
+72
-9
@@ -57,7 +57,16 @@ static char *cheeseart = {
|
|||||||
typedef struct bignum{
|
typedef struct bignum{
|
||||||
double x;
|
double x;
|
||||||
int y;
|
int y;
|
||||||
}bignum;
|
}bignum;
|
||||||
|
|
||||||
|
typedef struct ratworker{
|
||||||
|
char *name;
|
||||||
|
bignum price;
|
||||||
|
bignum clicks;
|
||||||
|
bignum multiplier; //the more you buy the more expensive the unit becomes
|
||||||
|
////line 67 six seveeennn
|
||||||
|
bignum owned;
|
||||||
|
}ratworker;
|
||||||
|
|
||||||
static char *digit[] = {
|
static char *digit[] = {
|
||||||
"", "K", "M", "B", "T",
|
"", "K", "M", "B", "T",
|
||||||
@@ -154,23 +163,62 @@ static bignum divbignum(bignum a, bignum b){
|
|||||||
result.y = a.y - b.y;
|
result.y = a.y - b.y;
|
||||||
return normalizebignum(result);
|
return normalizebignum(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns 1 if a is larger
|
||||||
|
* returns 0 if same number
|
||||||
|
* returns -1 is a is tiny
|
||||||
|
*/
|
||||||
|
static int comparebignum(bignum a, bignum b){
|
||||||
|
//branch predictors will hate this function :sob:
|
||||||
|
if(a.y == b.y){
|
||||||
|
if(a.x == b.x){
|
||||||
|
return 0;
|
||||||
|
}else if(a.x > b.x){
|
||||||
|
return 1;
|
||||||
|
}else return -1;
|
||||||
|
}else if(a.y > b.y){
|
||||||
|
return 1;
|
||||||
|
} else return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static bignum addmixregbig(bignum a, double regnum){
|
static bignum addmixregbig(bignum a, double regnum){
|
||||||
return addbignum(a, normalize(regnum));
|
return addbignum(a, normalize(regnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bignum submixregbig(bignum a, double regnum){
|
static bignum submixregbig(bignum a, double regnum){
|
||||||
return subbignum(a, normalize(regnum));
|
return subbignum(a, normalize(regnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bignum mulmixregbig(bignum a, double regnum){
|
static bignum mulmixregbig(bignum a, double regnum){
|
||||||
return mulbignum(a, normalize(regnum));
|
return mulbignum(a, normalize(regnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bignum divmixregbig(bignum a, double regnum){
|
static bignum divmixregbig(bignum a, double regnum){
|
||||||
return divbignum(a, normalize(regnum));
|
return divbignum(a, normalize(regnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bignum calculateworkerincome(ratworker worker){
|
||||||
|
return mulbignum(worker.clicks, worker.owned);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bignum calculatetotalincome(ratworker workers[], int n){
|
||||||
|
bignum total = {0.0, 0};
|
||||||
|
for(int i = 0; i < n; i++){
|
||||||
|
total = addbignum(total, calculateworkerincome(workers[i]));
|
||||||
|
}
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int buyworker(bignum *cheeses, ratworker *worker){
|
||||||
|
if(comparebignum(*cheeses, worker->price) < 0) return 0; //nigga broke
|
||||||
|
|
||||||
|
*cheeses = subbignum(*cheeses, worker->price);
|
||||||
|
worker->owned = addmixregbig(worker->owned, 1.0);
|
||||||
|
worker->price = mulbignum(worker->price, worker->multiplier);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static char *bignumprint(bignum b) {
|
static char *bignumprint(bignum b) {
|
||||||
//32 bytes is more than enough for 124.24 trillion idk
|
//32 bytes is more than enough for 124.24 trillion idk
|
||||||
char *nice = malloc(32 * sizeof(char));
|
char *nice = malloc(32 * sizeof(char));
|
||||||
@@ -182,10 +230,10 @@ static char *bignumprint(bignum b) {
|
|||||||
snprintf(nice, 32, "%.2lfe3*%d", b.x, b.y);
|
snprintf(nice, 32, "%.2lfe3*%d", b.x, b.y);
|
||||||
}
|
}
|
||||||
return nice;
|
return nice;
|
||||||
free(nice);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//wide = art and score side by side
|
//wide = art and score side by side
|
||||||
//narrow = art on topand score below
|
//narrow = art on topand score below
|
||||||
typedef enum { layoutnarrow, layoutwide } layoutmode;
|
typedef enum { layoutnarrow, layoutwide } layoutmode;
|
||||||
@@ -214,7 +262,7 @@ static void drawwin(WINDOW *win, bignum cheeses){
|
|||||||
int scorecol, scorewrapw;
|
int scorecol, scorewrapw;
|
||||||
|
|
||||||
if(mode == layoutwide){
|
if(mode == layoutwide){
|
||||||
scorecol = winw / 2 + 2;
|
scorecol = winw / 2 - 25;
|
||||||
scorewrapw = winw - scorecol - 2;
|
scorewrapw = winw - scorecol - 2;
|
||||||
} else {
|
} else {
|
||||||
scorecol = 2;
|
scorecol = 2;
|
||||||
@@ -252,7 +300,7 @@ static void drawwin(WINDOW *win, bignum cheeses){
|
|||||||
wrapprint(win, 3, scorecol, scorewrapw, "click the cheese!");
|
wrapprint(win, 3, scorecol, scorewrapw, "click the cheese!");
|
||||||
} else {
|
} else {
|
||||||
int scorerow = artrow0 + artrows + 1;
|
int scorerow = artrow0 + artrows + 1;
|
||||||
wrapprint(win, scorerow, scorecol, scorewrapw, scoremsg);
|
wrapprint(win, scorerow, scorecol, scorewrapw, scoremsg);
|
||||||
wrapprint(win, scorerow+1, scorecol, scorewrapw, "click the cheese!");
|
wrapprint(win, scorerow+1, scorecol, scorewrapw, "click the cheese!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,10 +320,25 @@ void gameclicker(){
|
|||||||
bignum cheeses = {0.0, 0};
|
bignum cheeses = {0.0, 0};
|
||||||
bignum onecheese = {1.0, 0}; //what a single click is worth
|
bignum onecheese = {1.0, 0}; //what a single click is worth
|
||||||
|
|
||||||
|
#define nhowmanytiers 11
|
||||||
|
static ratworker workers[nhowmanytiers] = {
|
||||||
|
//name, 1 bignum price,clicks/tick,multiplier,owned (howmanyowned)
|
||||||
|
{ "small rat", {10.0, 0}, {1.0, 0}, {1.15, 0}, {0.0, 0} },
|
||||||
|
{ "brown rat", {20.0, 0}, {2.0, 0}, {1.15, 0}, {0.0, 0} },
|
||||||
|
{ "fancy rat", {25.0, 0}, {4.0, 0}, {1.14, 0}, {0.0, 0} },
|
||||||
|
{ "fat rat", {130.0, 0}, {10.0, 0}, {1.13, 0}, {0.0, 0} },
|
||||||
|
{ "evil rat", {400.0, 0}, {15.0, 0}, {1.13, 0}, {0.0, 0} },
|
||||||
|
{ "rat farm", {1.2, 1}, {25.0, 0}, {1.12, 0}, {0.0, 0} },
|
||||||
|
{ "cheese mill", {3.0, 1}, {30.0, 0}, {1.11, 0}, {0.0, 0} },
|
||||||
|
{ "dairy factory", {9.0, 1}, {50.0, 0}, {1.11, 0}, {0.0, 0} },
|
||||||
|
{ "cheese research institute", {9.5, 1}, {80.0, 0}, {1.05, 0}, {0.0, 0} },
|
||||||
|
{ "cheese accelerator", {30.0, 1}, {100.0, 0}, {1.11, 0}, {0.0, 0} },
|
||||||
|
{ "the cheese singularity", {120.0, 1}, {250.0, 0}, {1.10, 0}, {0.0, 0} },
|
||||||
|
};
|
||||||
|
|
||||||
drawwin(win, cheeses);
|
drawwin(win, cheeses);
|
||||||
|
|
||||||
while(running){
|
while(running){
|
||||||
if(!running){stop(); break;}
|
|
||||||
|
|
||||||
int ch;
|
int ch;
|
||||||
while((ch = getch()) != ERR){ //drain the whole queue each frame so rapid clicks/keys aren't ignroed
|
while((ch = getch()) != ERR){ //drain the whole queue each frame so rapid clicks/keys aren't ignroed
|
||||||
|
|||||||
Reference in new issue
Block a user