From e378a16312fb690e1055d8d1beb3ac4958e6dd17 Mon Sep 17 00:00:00 2001 From: Krishnnavadiya <139139071+Krishnnavadiya@users.noreply.github.com> Date: Wed, 17 Sep 2025 18:09:13 +0530 Subject: [PATCH 1/6] feat: Increase difficulty level as the game proceeds --- snake | Bin 0 -> 80888 bytes snake.h | 34 +++++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 snake diff --git a/snake b/snake new file mode 100644 index 0000000000000000000000000000000000000000..356bc91b4b43fab10467895722e507f49c082b6a GIT binary patch literal 80888 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 Nw1x|;sDUzX_#bI&oE888 literal 0 HcmV?d00001 diff --git a/snake.h b/snake.h index ebe1192..f423e2a 100644 --- a/snake.h +++ b/snake.h @@ -68,34 +68,46 @@ pair get_next_head(pair current, char direction){ } - - -void game_play(){ +void game_play() { system("clear"); deque> snake; - snake.push_back(make_pair(0,0)); + snake.push_back(make_pair(0, 0)); pair food = make_pair(rand() % 10, rand() % 10); - for(pair head=make_pair(0,1);; head = get_next_head(head, direction)){ + + int food_eaten = 0; // count how many food items eaten + int speed = 500; // start speed in milliseconds + + for (pair head = make_pair(0, 1);; head = get_next_head(head, direction)) { // send the cursor to the top cout << "\033[H"; + // check self collision if (find(snake.begin(), snake.end(), head) != snake.end()) { system("clear"); cout << "Game Over" << endl; exit(0); - }else if (head.first == food.first && head.second == food.second) { + } else if (head.first == food.first && head.second == food.second) { // grow snake food = make_pair(rand() % 10, rand() % 10); - snake.push_back(head); - }else{ + snake.push_back(head); + + food_eaten++; + + + if (food_eaten % 10 == 0 && speed > 100) { + speed += 50; + } + } else { // move snake snake.push_back(head); snake.pop_front(); } + render_game(10, snake, food); cout << "length of snake: " << snake.size() << endl; - - sleep_for(500ms); + cout << "food eaten: " << food_eaten << " | current speed: " << speed << "ms" << endl; + + sleep_for(std::chrono::milliseconds(speed)); } -} +} \ No newline at end of file From 879b34fdabd0d90a112ef2921070bc60acf6c344 Mon Sep 17 00:00:00 2001 From: princy7027 Date: Wed, 17 Sep 2025 18:44:16 +0530 Subject: [PATCH 2/6] fix: food should not spawn inside snake's body --- .gitignore | 3 +++ snake.h | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d4fb281..145dafa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# VS Code settings +.vscode/ + # Prerequisites *.d diff --git a/snake.h b/snake.h index f423e2a..0c892f0 100644 --- a/snake.h +++ b/snake.h @@ -52,6 +52,9 @@ void render_game(int size, deque> &snake, pair food){ } } + + + pair get_next_head(pair current, char direction){ pair next; if(direction =='r'){ @@ -68,12 +71,20 @@ pair get_next_head(pair current, char direction){ } +pair generate_food(int size, const deque> &snake) { + pair food; + do { + food = make_pair(rand() % size, rand() % size); + } while (find(snake.begin(), snake.end(), food) != snake.end()); + return food; +} void game_play() { system("clear"); deque> snake; snake.push_back(make_pair(0, 0)); - pair food = make_pair(rand() % 10, rand() % 10); + pair food = generate_food(10, snake); + int food_eaten = 0; // count how many food items eaten int speed = 500; // start speed in milliseconds @@ -89,7 +100,8 @@ void game_play() { exit(0); } else if (head.first == food.first && head.second == food.second) { // grow snake - food = make_pair(rand() % 10, rand() % 10); + food = generate_food(10, snake); + snake.push_back(head); food_eaten++; @@ -110,4 +122,4 @@ void game_play() { sleep_for(std::chrono::milliseconds(speed)); } -} \ No newline at end of file +} From cd6a8f5c4c1090203fc2910f276a9daef74d3d0d Mon Sep 17 00:00:00 2001 From: Vishva-lakkad07 Date: Wed, 17 Sep 2025 18:57:42 +0530 Subject: [PATCH 3/6] Fix: Updated scoring system 10 points per food item --- snake.h | 63 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/snake.h b/snake.h index ebe1192..32b01c6 100644 --- a/snake.h +++ b/snake.h @@ -4,7 +4,7 @@ #include #include #include -#include // for system clear +#include #include #include #include @@ -15,23 +15,19 @@ char direction='r'; void input_handler(){ - // change terminal settings struct termios oldt, newt; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; - // turn off canonical mode and echo newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); map keymap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}, {'q', 'q'}}; while (true) { char input = getchar(); if (keymap.find(input) != keymap.end()) { - // This now correctly modifies the single, shared 'direction' variable direction = keymap[input]; }else if (input == 'q'){ exit(0); } - // You could add an exit condition here, e.g., if (input == 'q') break; } tcsetattr(STDIN_FILENO, TCSANOW, &oldt); } @@ -52,6 +48,9 @@ void render_game(int size, deque> &snake, pair food){ } } + + + pair get_next_head(pair current, char direction){ pair next; if(direction =='r'){ @@ -68,34 +67,54 @@ pair get_next_head(pair current, char direction){ } - - -void game_play(){ +pair generate_food(int size, const deque> &snake) { + pair food; + do { + food = make_pair(rand() % size, rand() % size); + } while (find(snake.begin(), snake.end(), food) != snake.end()); + return food; +} +void game_play() { system("clear"); deque> snake; - snake.push_back(make_pair(0,0)); + snake.push_back(make_pair(0, 0)); + + pair food = generate_food(10, snake); + - pair food = make_pair(rand() % 10, rand() % 10); - for(pair head=make_pair(0,1);; head = get_next_head(head, direction)){ - // send the cursor to the top + int food_eaten = 0; + int speed = 500; + int score = 0; + + for (pair head = make_pair(0, 1);; head = get_next_head(head, direction)) { cout << "\033[H"; - // check self collision + if (find(snake.begin(), snake.end(), head) != snake.end()) { system("clear"); cout << "Game Over" << endl; exit(0); - }else if (head.first == food.first && head.second == food.second) { - // grow snake - food = make_pair(rand() % 10, rand() % 10); - snake.push_back(head); - }else{ - // move snake + } else if (head.first == food.first && head.second == food.second) { + food = generate_food(10, snake); + + snake.push_back(head); + + food_eaten++; + score+=10; + + if (food_eaten % 10 == 0 && speed > 100) { + speed += 50; + } + } else { snake.push_back(head); snake.pop_front(); } + render_game(10, snake, food); cout << "length of snake: " << snake.size() << endl; - - sleep_for(500ms); + cout << "Score: " << score << endl; + + cout << "food eaten: " << food_eaten << " | current speed: " << speed << "ms" << endl; + + sleep_for(std::chrono::milliseconds(speed)); } -} +} \ No newline at end of file From 935041520e9a402d0146b1974264896a7b703b1d Mon Sep 17 00:00:00 2001 From: smitkachhadiya Date: Wed, 17 Sep 2025 19:43:55 +0530 Subject: [PATCH 4/6] Add pause/resume functionality for the game --- snake.h | 172 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 121 insertions(+), 51 deletions(-) diff --git a/snake.h b/snake.h index 32b01c6..aa0b5a1 100644 --- a/snake.h +++ b/snake.h @@ -11,108 +11,178 @@ using namespace std; using std::chrono::system_clock; using namespace std::this_thread; -char direction='r'; +char direction = 'r'; - -void input_handler(){ +bool paused = false; // global flag +void input_handler() +{ struct termios oldt, newt; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); - map keymap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}, {'q', 'q'}}; - while (true) { + map keymap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}}; + + while (true) + { char input = getchar(); - if (keymap.find(input) != keymap.end()) { + if (keymap.find(input) != keymap.end()) + { direction = keymap[input]; - }else if (input == 'q'){ + } + else if (input == 'p') + { + paused = !paused; // toggle pause/resume + } + else if (input == 'q') + { exit(0); } } tcsetattr(STDIN_FILENO, TCSANOW, &oldt); } - -void render_game(int size, deque> &snake, pair food){ - for(size_t i=0;i> &snake, pair food, pair poison) +{ + for (size_t i = 0; i < size; i++) + { + for (size_t j = 0; j < size; j++) + { + if (i == food.first && j == food.second) + { + cout << "🍎"; + } + else if (i == poison.first && j == poison.second) + { + cout << "☠️"; + } + else if (find(snake.begin(), snake.end(), make_pair(int(i), int(j))) != snake.end()) + { cout << "🐍"; - }else{ - cout << "⬜"; } + else + { + cout << "⬜"; + } + } + cout << endl; } - cout << endl; -} } - - - -pair get_next_head(pair current, char direction){ - pair next; - if(direction =='r'){ - next = make_pair(current.first,(current.second+1) % 10); - }else if (direction=='l') +pair get_next_head(pair current, char direction) +{ + pair next; + if (direction == 'r') { - next = make_pair(current.first, current.second==0?9:current.second-1); - }else if(direction =='d'){ - next = make_pair((current.first+1)%10,current.second); - }else if (direction=='u'){ - next = make_pair(current.first==0?9:current.first-1, current.second); - } + next = make_pair(current.first, (current.second + 1) % 10); + } + else if (direction == 'l') + { + next = make_pair(current.first, current.second == 0 ? 9 : current.second - 1); + } + else if (direction == 'd') + { + next = make_pair((current.first + 1) % 10, current.second); + } + else if (direction == 'u') + { + next = make_pair(current.first == 0 ? 9 : current.first - 1, current.second); + } return next; - } -pair generate_food(int size, const deque> &snake) { - pair food; - do { +pair generate_food(int size, const deque> &snake) +{ + pair food; + do + { food = make_pair(rand() % size, rand() % size); } while (find(snake.begin(), snake.end(), food) != snake.end()); return food; } -void game_play() { + +pair generate_poison(int size, const deque> &snake, pair food) +{ + pair poison; + do + { + poison = make_pair(rand() % size, rand() % size); + } while ( + find(snake.begin(), snake.end(), poison) != snake.end() || poison == food); + return poison; +} + +void game_play() +{ system("clear"); deque> snake; snake.push_back(make_pair(0, 0)); pair food = generate_food(10, snake); + pair poison = generate_poison(10, snake, food); + int food_eaten = 0; + int speed = 500; + int score = 0; + int poison_timer = 0; - int food_eaten = 0; - int speed = 500; - int score = 0; - - for (pair head = make_pair(0, 1);; head = get_next_head(head, direction)) { + pair head = make_pair(0, 1); + while (true) + { cout << "\033[H"; - if (find(snake.begin(), snake.end(), head) != snake.end()) { + while (paused) + { + system("clear"); + render_game(10, snake, food, poison); + cout << "=== PAUSED ===" << endl; + cout << "Press 'p' to resume..." << endl; + sleep_for(std::chrono::milliseconds(200)); + system("clear"); + } + + head = get_next_head(head, direction); + + if (find(snake.begin(), snake.end(), head) != snake.end()) + { system("clear"); cout << "Game Over" << endl; exit(0); - } else if (head.first == food.first && head.second == food.second) { + } + else if (head == poison) + { + system("clear"); + cout << "Game Over ( Snake ate poison ☠️ )" << endl; + exit(0); + } + else if (head.first == food.first && head.second == food.second) + { food = generate_food(10, snake); - snake.push_back(head); - food_eaten++; - score+=10; + score += 10; - if (food_eaten % 10 == 0 && speed > 100) { + if (food_eaten % 10 == 0 && speed > 100) + { speed += 50; } - } else { + } + else + { snake.push_back(head); snake.pop_front(); } - render_game(10, snake, food); + poison_timer += speed; // add time passed in this loop + if (poison_timer >= 5000) + { + poison = generate_poison(10, snake, food); + poison_timer = 0; + } + + render_game(10, snake, food, poison); cout << "length of snake: " << snake.size() << endl; cout << "Score: " << score << endl; - cout << "food eaten: " << food_eaten << " | current speed: " << speed << "ms" << endl; sleep_for(std::chrono::milliseconds(speed)); From c679688892e817beb871225a32eb5160fd8683ac Mon Sep 17 00:00:00 2001 From: Krishnnavadiya <139139071+Krishnnavadiya@users.noreply.github.com> Date: Thu, 18 Sep 2025 13:49:01 +0530 Subject: [PATCH 5/6] fix: atrck of Top 10 highest score --- snake | Bin 80888 -> 124520 bytes snake.h | 268 ++++++++++++++++++++++++++----------------------- top_scores.txt | 3 + 3 files changed, 145 insertions(+), 126 deletions(-) create mode 100644 top_scores.txt diff --git a/snake b/snake index 356bc91b4b43fab10467895722e507f49c082b6a..f67148923eafbd0eb2f7f0fce0a5f52b099ce829 100644 GIT binary patch literal 124520 zcmeFadwi9}@xXl&5{(umwV?4*JyO(;!@!*=J`A#RAlqm{0e2TcFUga^S zeC5a>%ys1HLRX$bPJYKZ@=S#J;N-`JiS_0?^%CJkQ!V5|X+wUd{=H`I|I%KuQ*Z4H zhE5_}KG5X5&~5J$>WN%F>yIPO&=jY=bb82j8gQYJb}00<@&&U`AN#fPxnC_`P*J<& zt4qe6{?*gRj;dZX>QrSxs)hL#^<8lB^bl%kl{`m`q0D6_?a~w6UVkrHt?`b)<~^2t7yTUV1c7QpU*Rw$LP=B~LgT!|w}a&n2n2`FY<@m%#NzdhXXecj~ z@63C{oHEZL&o73K2^Hi^OZZ6xLZOn9D;6%QD5%plF1Garc~k7n$h{S6$`#sTUJt8Q#I-0sU>bj zFk|PI%`2@fuYuF@vYN64F+E3Jd2fo?R%l=9U*PUZ}Mfl~)&P<*D){c~fh~ zmQ~CxPg#EoG{=}G7FE~K;f0f?l}yVoDV%yb(iJ(KQ8HyV4VIOaEU2h1L+Yg!b4#kq zW|x+iR?I1zT?~P7UXhALbIVE~S2i`jWXe>bfY3&db^0*RX(3fd&Kq5b@P(U_NsFpW zzFApTu@GX)gVn%-iaAwf3(G2M(zL5BO2>=OpE7mP)Dk1%(O-9!J-c*nNojfcqB$Zo z^gJ3fn6qR_>FfoIM~g{RFDRK)URqsUQgcnE^myJPC{UubWHvTdQ8K5rX3l)mt)PKS zJXQ68z(%7hl|czXMOA6lHIP|QLwhAxELl=gSyolOsG_udLCrNKi}QsEjHO>=8++xV z1r;vwae-Qc>pGurVJ`-i!K^_i1y=7gd)j+0Uw?iK87Z%Bv@#s66dSZ35(}`i>Ea!WrSg2Yt&_6!Dkd) z!1U*qeVS!Xuef>v4NfVmu3cCbswk~kR9#+HR*6t>XLGJ9nKS>Yl6j>I%0mmw7A{=0 zxGYqC4Nh%g=!!CIuCyvt#mI9ch_6_(0I`XQ&2c=@!qNp54tgHmqmP=bcwFW>kLY zf}%+i&YLlV=dq(kj}9cqoEk`;Iyywbb0JThBb<|jc z;AxEicn{So3osMnLzo?w(<@L9Y~&AD#s~#kmeoC|JnRXjjYfYG?g71$a4m( zUim+RJfSZ?lA6n0=FX$VCtdS}5apJVXYe_p=?=b$jMCm8GeZvyEqC%JX!;AGA35po zY5L&M{Z9It7aoCLPUx3zTJZ;lwm9iOK5`XL*`a5hbj|SFS=wcVI-GQsmLCw>L)!2& zAXMexBt3Y+f$B7?Y ze%!R%zJwJ+`4xT2&wPiD$I_ov6o z|C*Z#?6vaqt^7QvU&7UJE8mTyP^YdBU6dO~NxrNZ-Jdn1Our5!!#o+xIxC-0%=_73 z<(m;9Fz-_Hsj^PAi`Q<^9C1 zd}r%HaXnW4p3=1f65$+w0O?EB{LtojfaF_6yvfu$Av@aVct; zm4CQf7?^M6A7SN>v-0z-`~oZgNGm^LKf=mywer7e<+oY+qpbYTA3vAC=Mwl_0-sCZa|wJdfzKuIxdc9!!2cqFe+@eJ z<4E1!oJd3VUk7D`BK55`nSJe%y6rhnE4jYYW*?dn>N{~R{|`E@ASC7I3#RLhzP`SB zO`4X4V%Lj)S{BM(+x)aF7`qzd%FWx>~Vs-KpHUf1z{S{CYEhxut)@O5SSX<6uXz4wXNUs>RFz2T>2 zLErVFpO%GQ*ET;b3%ssJ{j@CXy6*SWvY_j_-A~IxuIna0Eep7=DnBg?x31ZKS{7_w zQ~b0n)Ve14X<49ko$9A$Vb*oLpOyt#*I|BI7GhnQep(h_UGM$J>wj3%Z}{nn1PVcj8HhWQ67oI&NY}?XT~|*S-); zzm$-EE+M@mA-yFb{dhw97YXTy64Li3r0+;b-rndpBx<2-v_@rhq1SUHKa{4;WIB@HW|6O)=J@O6Jj+h>)JNx5IcqF<5RIe}(YBQ)v z<7!11a*^muf_MuKBMrHcy0`Np4TnWC+9gx`$MV+N$DEcW>o_UbSl=O(8;ATv$tr<) zcsvm82C>3N3{k{tQ^Vj*ljVxYp6RgmCrQ@z9z5vBt;<_$25*rW1kS(VpkFieMFPUd zum3Il7RKjBMi?2@jPE{81Q>}vZL!-V#iAXNhUrpruu8KgTlFDSZiHHVqjr5}@9&@f zj0%vs2L%*u02l>)TcwhHJBp7)jc^(appjn)=h6B$;oQ&NV{%1a-QR>`MN@hiGetuv zTE87c!)p28>5dWFQ_Ad+bq7jID)?umi+=rMsE>w?9vrG#?r9oCnX4@69A=d1%JeHr z`%`7QKebHDG&>gmDpcY#B++2Y^xWy^P7}lKMR>Mhcc@_(WByp`Qy@d}5n8!k^BPvq zP*h=4BszT!@|z{ehSl>;?mBWekXvbTmzdmUa$CqXY)L#fF-BEuLpnOMt5#Z__^^*a$JL)e6 zRPU(&CSWeY6%v!8+s}PcLM+lD(x^WN(9{%ZY}9n)>R!fdQS{BC=szb%J10lGilWa` zI9DsTMWQc6qL^|lev1xRhe#|QVPmo>ej&`RsQ*w$y;hNuM~dR3rex#l08;h;yfHXw z7yB?=)N9Jv(T8duH7A2it{j5+pvOZivP-fvLS5g7%R!GT1LG@ehYWf=yZL~OP+d>P zitL~A(Dhvl|GhyfE+ggAkBpZygVabS7O&>i1$D?M?XXAbmnbbgdo@r?L?pQ<64Irp z^jfb$Kjc&rhl<&?qm1a2qPR%(u>u9F$0=yc2iO+bi$%uj#q7iqx*iv29#gy1bS3GA zdab)Aa)y?x{aQo)cp)Ykvv{aIHqw}V)_P%3yzh6ijQ4%x!@j<*VOn1r)#B2Q)F10+ zc=bbG{iB@v_e=daTwuTL3+)$T7vyJmDm>!%5=24yX3hEd~c&1*C%qwuc~BV#Z+ zl4Lvt=#>h+Mt59U4IQqC!e%Vl)SQk{KUOI%qLl9{c6vJuG62Co=Bto7Irvd z`IijrXkic8{1(QY>~A8iuK$=u%4^T35n`4cKwUheJG(`eS<%8oT0c!qYk<)DrJ*&q zc2+}S$A8H%%r+Kh!QCE*yWZ3d-9>iyMTn)gwvbi~#~leAClUL<)WjxBHZwckK=kCz z+1c+0^mOCiW|75{m#O7FRt!i|m)bU^Lh&{K>g&7nLoFO_j}|t^ZwY2#!_%ATC~ioN z_CVH~Xs4ZQe$5y$m|w8+qo52wY11jcT$nb4$jYtITz3#zh_9I9w3uoT%~xz-5OtHa zyme6h7-_P>@RJ~)ztbbjj&I!Cnkb)0bhS)Q{fOy%?Z)xVln1;92C0#$=$n<0%P^Z1AXeXj zLVN z{-+)qY%t+X3VtekMJm~a9<4%$*0Wk~$aDLJv<|+1OHO0Bi$BVaoX75v4qv4Ah!whA40*~& z6e%J_(+?;jdzC|Zpg4u(ga0*3)Geri zlcmnAyNq}${~^M#)OnmEjK2{X`06}Jb5(rL;VgW0_V^56r-&5l+@*-@-#J}9TMQ*x zoew$a^Fha-?h&@KpSV-F6m`!3NS_85=I|2ag)D3NVOv{L)!ctN+;9_rV=*wp^d9WDzCo!ak9Ls4prCQR*2 zsU6)$W3M{JA^EIZPNrs4?iJH8<#zbx9yE+U^u9EtjQ>$`*y^F4JM;}=H>V+94ugEg&MCq3UwHnl>bcQmY}6S{7D~iVJSTE^arXs&N0h|1l`*IEuw@rrG!}B@x)BLgqVF!m;>zwqQw??Grkpv|lMg%-OflJc@8|xwuAlTSvT!l>9K7C3cu{ zY{>fC+p_1|L0HOIVo@>NcwMhV&{yZS$hGAsq)6n$ z+Fn*3znE=mL@1*{A1lb>c8E3rx;Rm8XtNE$u zZ5SQvz*gFA-O15J0}EoBoFIL~?Xn3V$uXMTie@__(N~~afT#=uc2i>U$NaqFEUP1)jRr?SPzz#yv{2Z~o~=V~ zAnr1)yc)zVbYw+_Z;M3RIXub~uc3Jy?TbqFtR_dCt|kfQS)-+=Xb2kfKOv!QQAUK0 zv>=FP$hAZoilr4`K`v%rv&2b|$yRuDdMkZtBd=MP>yEmP9WJ~GZh8l>4Tz#->qQi{ z<0%;x@lmoHuR2w!zCBDMsR1e%X)Z_ih@|OgaZdN~+Ah-167Lz^3R%OS>HUk$>`lhw z`eV(tTgO$3?sj0?uK0`ucFCNE+^o@_qMnS2V7;}e>gA`hV|-BjN;w8-&^-mTub$@` zC4hkZO}crK72LO5!n%x(1-BNbypiOcMDs>fKn@#STM62DuG*-P2Zj@iw}?|btFUL# z?X9@f6Qm)@{)uFZuY`_fDaWtEOZPap%ym-c47ch~&8B6kwe^k6NQPbWNfsyeNJ-A|;uvB$ET92VcidXklTeA1Lamj>RukKi)wP z0;j0ePK~pu5uYcCy6v;Rd+ueHtPoUKm81$1+c$=Lzz8@ETAHzW2VWzai`u5yD^hW= z_hQm1{iZu&#JJ7qodh9!UUz+lLrGRpmPhg82jNtVp-0SvC}Oo0MFf0rlA>LAr>6X_ zc0)Fc#XZL2wJ?sUbfR&7WzN)M|DqU+$Wz^72g8*?$KuDzvq%E_(9;8*MNT0XN06|W zSu;gVMO>~HRpP^yn7Xu1r@aErn#_Tt`2E7pNzpbracmq?88@N@YOdp>A^61&_NHli{CwjZ|2xiCs_}T7kI;@JaQ>7LcM|7c{tTQ4E$TOh z(tlx5w|F)F7mI2ZSCnK?^-42fQB|gyM2p&JvI7=%@+<$PMg0pR0gJ+z7-F?*b;fr! zgwEJjd!$%lgDSD7p&*N#fYbO4zWU=+gT7i!H_vzKvG@<2{^)fIv7Tl!x{r0|9cOM{ zt-cR?kHrtx&f2#_AnE&mTrNk5=j!ljD2QlyAVaAkGRzDqb%B@2;gDu)wF;)3nk$ zMw*7LfUeK#_)KH-4&}q110^Rg@A)e4L1=T@jR5Q&00dh=U)$`yN}&6-Jn5t}6E(0j zFwS`a*>VnYt68Lx%_S*Ql$n4@#4ozSqhNxqT$boilsK7rEf#N-y*X{cEC#QZE%Rt$ z9G9z;U#HXLmtSJvvbV4HOYsN(gfj}&^=1W4l$miS8;sI7``rG0>REG0U{1S0W8v^k>-R=?(7njaHs&(kUzb?vm?6!q}U71C;02A-T!M`w1B2SgRR_D0N5 z7cwjdCA?O>73X$yB~g?ei?8t+NS+~N9JxNWt~KA$)Vox%ByMhWnQ07?!HvNV-4xK4 z9%pm?Db}wXS?&@Oc>3HYWdj68T7{95)owKADB|(lC&4+<&ufDJli(XCw=3g~LvE6- zdNaoBgq&k-f2Nf5xWhM*Y2A}$$eUz^3%swHRh0Fg@bI2CqOSXltfL2iy=>@MK zH7Uo$;h1Jz+pF6?j1c$SnJHEY)|OJt-8Mpyu>xr%aeF9X=d1w5cStNiG}9KTyRJP{ zlP}$o5d##}_NWAOgGe@@CQBOQQ+GE3`%8$Y(V9b1$jCZ<1Y~qu0xPMzt}|3421N_8 z_yCbHU5_+O!BmiSbTX7Bh!(f2kql||gNH~7J6THwmT4UF_Zvc?Eou>Pat}5}t1BW628~;bvRmz@=mo1QH%a+Rva zHldxJu{|n89dc+h7T;ykam=hI;%@}KDA@^H(lgr=wmtIQftcKu(q7`X)h=z#Pu!NMe#e=S951g@b>VT;87oR&+7UKR6E+%;k^Z&P zWeiu*SITLV>=pVe%x~!d)Z|W+}G~2qP#Xq^HczLfmcsT(5ZqKF}S8@kj(Md z`kSj2z{)0iEse_@6N_&Wy4nX^n(+lp8tMzct1mcTF2a~1adiZ0SVF0{@lyNd+oE{mQ?&+p5<5%UZ3U>LrLRBddv<^ zukjO})u^8#z6s9X_H69hl@24^d5b-6&0z=QMLj;j?(~-_Vm9$!hVNE~??1?BZ7c-I zZ7IaA;h5zD&+H!Ku8*8j|6;r}r8uxWL<9qsKLO(*l~PiVC0+}hW=J3M=&INUqKw56 z6;!-@d0XPxqx_0Bw}}6-6NBm?+fNarMrM8R2`edw4*fF7}y^EqaLH; z9VA|8s6{QNc%iURSJ=)pgXuBGY9B|L!5IIGe+b0*bSkW!V#~LC5``HJvH0(WP*kjq zo~j2yNMfOi-Ktm(V_?B6qS+!gnW`lis%=h)pK@JGkv7_)65IkA2U;z}7LjWm)Yzo$ ziohuqi$9?9-+>TXO%@mY@szRn{f0jofLgFZJhCpE0#31=Y!*T%p)QQiNboB#Xw`qUPiCKa_b){=}$V`c-lo{UNp>GqOQ|$Q9hNv$k z=ouN>^R`jYg8^}>puIx5hO%zE%Hgd)a$S0=Hg*{x5?Bq}cyX^pliH3?!HqGZ;`BHY zd0ZNc^J2reZG+aPY|CSddEfAUm1)-9O|Y29w1plvC83MgsyQ#Hq~HdI)jHh88iL3s zjtN%SqBgd(LfF2PCS=*7!5%X)Ni%k-7>f_qBxI5|Z>O6pK( z@;b=SuzFK7RK(LutdAA3&vFc9+ObO+*sV^vtF-ph-ACx4ZIl^92iEgCJLqWyMY&z5 ztU$^(t~0t%^8003O6)CX$1mC z@+wH#7b2^PtY#`9Dzfq*wPp>s!~CL48k8qwg{qd-UGl$jFW##9a>ZKC`}k8Mrg1 zN?+GAXxYBi@ZvE+FX~1=Ef_>|f`58Sx4w>$6CVvFnx9~P;Zn=L^k7IfqGT$sYvtwx zlUb~=Rmx+_ZN{~z<^PuUjDBfB72Dz{n6#E?(-IP2WkL_ESOI{@eFWrRh)1?|@?vf~ zjdW;(je~!ue27ES>`sOjzmo+G8FhW5zN}&;x>oc1e(K93}UO zx2l4n?TRGF;{8z(qjbgFVdBx-Ve$!c*Xnf$#V_3E$IBHwr-&+lEe$fHZvY+txwf7V z2j(+=7_qgT&SU{B?Cm}pK6;HxK&rkriN5Lzdxhg(0=bT=S0$9PZLk1ZNIZ2+*;x1% zk_YWm)5Qq>LSrIz!#$`ojv2k>sIzahM9Z3v#ov&G$T%=)cC`kawfGlGSaE;d-eUM_ zgRfTlh<+yr3?BELM044v&vnU|Lwf2T76r3zv2sd!$ z3@6I`*;dYy62qU?SY09{jgmT@f-e{`;c4vf zCp-S#Ei#xBM3$@5k;8QuvepO*u`N{>5yz;K7hW%O5HYCQ5!qO-HT`_9%uTfZc?P?c@B}wI31$m2par@kCXRHlcKTo z2OqMjH6_n!E!VWh&U$Mu%m`{&#AoIn-K&x|it}KG!KZtcDOHG(#_yLts^jl++nK3sY2rn;2FYNrx;A5lrXnJ zc3|pBC%Qj+Lhv0@blhehQ=5G93hGseS*Hg5tP>xB1FNL;V;KGDfJ1HeSs8&*ohafW zE|xRHUEK4E^Zem!l9b`ECrxi?ii*yS<^33%EL$Q#=pdR zdYS{N4wQ^j*LqJ#y}I7qLH9A^4XS@%&klkS-g}QHgb@Ym98w+Y1W1?Iq-(BMu2?NR zVGe_py>8Pt5vD8hO1YpOjBjSD8wn`pLM15`-}t$9<0~kHO_D) z_~9N`i=I&B>oH9TD-iJh?J*IDH+y=1)d@N@F2MA6(QH2h#vJ!DNK^}F1tS$`dNS51 z)o~=}YRm!Gfg9vHfa!&^-bA~I%Fz9a2~s+kkaJ`_e*3wAr}xKWL5@ElH8(Jy1kMOQ zJ)Vbw7BmW*+POz{8Yl9d+=?vQoYApfoT9i*vl|kZS!E>n7U6TXJM-(Y39jY3W~n+U ziojy=sAyC+&13+$t=wgfe5CiHF7JZ|V>bn?ml?+1r*bA7i69aLpz%XNZg3AL*Ov`D zm8x;=;vl0KJL_Vy0_!usDTsQT9d0fP@^i%{j&lc@8UV|cgqg4VQv9GZl4J3&2?H7` zwMtMVp5yiSRlHh8SWhH-6ue>+5_$=Y#lNUQM`3$+uA9>(BVU3&xfN0S0AiE?9`$Gk z$D6ejng|BrFFi`F)Dej@9z>PaIFSCPwXKv>!3)Zm7h$x%C49;jKg`HTb+`DRQr8un z^Jooiryi?ytznTwB*>pTn*?}N5u8myD@t<5j<2=Pl4EwM^C=4F&Z0j$xt(2VQ4Q{l zUTKKPFyV9qEtwr^RoahKX(9=XJ{GUiB$6oXEQaXZ#K74P0?{(PZngn~qSjdKFVIaydmh1GoC(h+w zx!2&Vss=6RgFCcU2%%W~B`FOLXHk5EoB6W#0V>?#keX`OYka%@5hjr0TK3o7`af0{ zwy`zVMpMiOlf{$~q0Tu!RO%#|2)j1Qv6Mj)>T@sVB0_Z+lV`i!y)FpdK~M>_Yf^6Q!k~Mq|AJO_c+7EmaSk2! zJCtGT7G0sq)|e%p8s=TZGmqR>;eC)?pk#TZYub^%R3w%SNTyb2W2e>IrC*KW$k{FN zrT2B4vkL8dKzg#T+I6Ys`_k(a4idHaEK{&tj^L9*Vh%|Hd_i~QeF1vvZP6<^>D1e7 zHu8;npH)+X5l3|Y@GYxId9pP+UKy&HWtfS@UzQViS8l^Cxrt0{i#pqCvU?^%6T$K; z8da0av`nshe1g4=p?3Gl7I{bqME;stRcnu!L}dXp(EY^Tr4PendjBiCxmds#S$JDM z*j&tstLyC1FQ7f6o}Ya$dr-TllIj_7O&8|KkRiOMTf8?Z#$px^tna*S(jLkL=HE>l z6X)Ob{vQ`J3m1ba)HdT{7$1|@C2_;}62>-fH)1hW|Zoa5Wqm1fN%j`5EqO1^HYVt*}6x8k)YHu0KrYqc{ z5OD=}z^+fGHYYW;X+rHzi<%j!0p9YHsSQa@?Es;6kwxuf;jK>AD6$9|^urdNNdt1e zOfKTq^$w^xPW~VC!;fTO)%9jL-n_0ivu0}79vy7~uI~C9_4Js{lh_T|dkTqFQnKqY zrC{WLn~tggwW4HdqYX8_J*xb=+B}|;-B+Ss75@3jq%x98y~#L(u|!fYzX7S^TvGqm z!H8-4mh(6TNQ%`vAIaqX_n&EAOJLOfm$vE-Qv1r`3?b2j{j7+AM zk(yejP_u3OOUcw;OBV01jCd2r-6l!~Z2Nac!uGgpN~Ttpn%X>}X504FLal$>zE!p* z{|DRtSo9vW?dKtt!nWHf8L;iY>P~3Dwl^kIyU|cfG{~DM>D#uxzYugRrOBjDPfhCU zLdvu4iwsw`Z67YA5^Vd8hf>&ft{eUOr)P2}Th2^mcJI|KVf^4^Z9~)f;up^*ZAF8g6ozu-50y-=2A^W=6@Pa}{YFfQVE z(yBQMeLDW6vO{B>>v_z$tJ36kn6687*B)t!9$-SxP-$pJPP|vPU*){moW=?=w<#$u zLE+|n(wys_wnbTm2VqzCEadi&EJczo-q-UAed1}SM-6VM8;j=;QSlghZe*gnBCt}} zVYy;w(QT~^rN@kMbYfe>cQyeE8q#Dw)n}ji@E$dSC%GxopcOzi8LcaI_{1%^9u!gH!%1i`wu9)3) z@e`3811lp2a+1f|oG&hL%qOe#w#ab4PSakU$LNB&!d~0MSJQ|+^ElEqBkE4olek*f zCnX<^oWx&mun3rnv#4n4O#I3)l!g$4Z$ao$xxat6LLwZ!kE+93cJDq!m!dRT?|E_M zy!%AbpL#s>cRiV!iLVw%9gFk%Gz6Omx#0eoD_M~y#h#^F3b{Mj=Ym+ziMm6TuIAEJ zDCq%EkL>FVl0hvez;gBw>w6J-*}HLJue{CyGF-e1>=>}l)MM@q7*U{+z$R>w2+U{S zY_&-Xh``@!LnLa^_fXpGt#wM*ZzX9QhYIWlO~xq9DBh~yet0duR5I(fhjmNM>b15J zE8JfoQg$T%Ysx+$8S;r@pDD+msyT?OPa1Bz>*{uW?oQFRu3q6vrE!VL>M(9iv%Vo& z?wOH#JDu{c7jA>cS%dw`F1-v>ImVuYcnz|(awDEwj4$9Zy4EIWq8Q<}iDRZKEy-QM z(|XJ6Dbh}KTV(6o=g94`7qAjO_9e53%z4`8Ya%}3pQ-Q(!ZY-t`I~h{Q7O2BxriI< z6lF%7+-euSTWXm%Y1|HmwWz!{gRwN$ir_%S;y*KUQ!8ng>if^AxMjP`t^I~%8J+?S z@v=4zG5x66@Dq(Td9ZLK@WX6y!qBC-fBKXH=xtN#*2C@-q-UtUJi#NIWQbA zakT8NHB8=MYeEhfy3E!di)FP+?a6K2ctsT=b_RiFU2n3`5LXEs3-5E(UaBj+LCYJB zS+q(Q`Xpol)`R2KKK|Z7qv{}_n>(aXu!*Cki3Vk)-Dx#PTgBRRFOT4=QNr$6e3l5m zQT~zvyS~y4lZV->z6rX~yzUd?JAUak(CJWnqD`_)r16TOpbTGYmQ?G&k=E`uQ&c4P zH^`Y6t^*!^`JKY5?cr^ok)&;5+_ToPknYZppJe#MC_U3Y%J7G!$Kq!i{;)RQtCTzA zK@XFw{MG&@Y52dr#SncY zh!H1*6AP39fBr}{1BG3GzoW2E&fGgqlPdXzkoAq7f`kykTiVX-6*x1pW;82u@hZFX zfSGQJp-PX9N0h6Moa}6{l_n#p?z+}c?S)1*eBDr{{xb?&YQ~}VHga1;F%PrJqSKRZ z61YR<3PkIFh^T?}3A+t}m*!URGL*BtD5kJ+BO4skdrqv;r~}Ux$r<#xlxB~=p|+DY z?_4dWCoy%wFek{OFU7-DjQ)7lokp2O6XNJ+?x1?z_Tu1)llYWzo>ZJ8iK}F@NzXuN zfNLU#FVycwL^2DAgOE4uF~r2EB_D!d8L`f6KFUxK1A__%7Ax%4DI|F<`K#lZ+N?MM z{?uq}ExB9Y@b;#@RUvcLhmI8Akh7o!(|iumS*GO%DNf|H9U2zaw?IOBrsqhI$f3@$@PYMbao0qe>n>Yzu`GawU2+(IBLAVY}Cyh|&Wm#oO?H9e2)J zgE=(WIy9G2$!6vgU$3vA%Q;yrem!qYkZ##g_((?gB{b12Da>q*d5*R~Bg(#7#UkyXoD0IfdmZ4i z^i=<9%)wAiJd0|j6}Nf$+j~&ef=u}`b9rY`&)hD!z|7@%NwjQVuSgaBAk6j3grj2t zaS`#Yc5dK12n^g@*NJP$6N?|AEU;hdXM zP^V*KKN3Dt+$;R5^tNt$L1677V<(S(B51-_5x9S)aGe~5MfKYtpXuY*#CuP^a^ z&lKV7&$;RCGa&Xf1F^R-_L`&ZD+)K#S_|rp7)S`_Tef@=Q2EhA&UXK`EGi&PIhN0O zQLZ`H={N6{kjTiOM-WNzK3C&FeSvG)bsIx92ZL;u9s6$c7h1UZZiu#dt)Id77=}5i zh(wDXMmK(SX|pK+Az+`SzC z=Lw0~!bJ4OP7ajorA8^8ys~DxXzVdf7lkE0i_lIjx0^xk{Elsuok-Ij zZBBtfw&xoTawg#wW;rh0U=NOD;&?$itsMj2rbKZDeZ|M5t$nN#`6uF+Q>jkyl|D%~88XL;6_v%<< z#0vKoh@IA5*Ae1-Y4Y5CQmn8?9%6<24CoDOYCr#nB7>fUOkK}8wsTFmGMngg%!ZY# z*+sY@H4T4Vf0<-8PXD#pZK9KA7~RiJYD!9c*5O#usg&%xSNIU)@`LrG422G|sI3Nf zpvhvJNN=tG+9CQj-z!H~m(ZS+cDeeq#sJ!uOJIk|l4jg7`76n4oD8G7*%mjbSUg*X zlX4l0UqJ(K$0+f*9?bEfY>8aJij^@C+;yy8VY^MdW&svKe`UKSX#?sO~IhjWdzJ4^#A!t12A+=7wI^R@L!thd~fzKPq!q{TF_i|#GY)!V}hbj#fgWJ%dlI8CgKjkR?U898M zx}z5~$=w>%s6n|zelJ$>cPAknrnMAO>J9m z7kahTc-=mH)o)%#g-hU=@0t^FF;aOscD{2wGsd+*g=Cbh>V zGr!K%wwZ7AY6qCFr(;Q4K=mJBwW=U>eUW3|1JSP z&2tksK%nziNxgqovVy(8=}_k-3)}V{Os;x+a@7l{nly5*U!E{>@?En}GI#MJ>|Mz= zzd7`8*QJ(8#}oKGhQ{ci9BX)Q2ppE!RBQL zs~6BPA@Fu4VVN$9)yi&=RLHqSkZPyH3R3(v3Gv{5Kw@ui;xe#nyI9g^Ik+EhJqSY!AF`>I59+Ovc9RMus#0_OFMa&$qyX; zy|YZ!XPse*#Ks}9zyW~Sb5m=cCh^|(#wKgG!OP=0>-H2%Y<%?rPNo9FO}g+9*Hzg-bJyPGs(5kH^v-)o*RZ} zV|<{Eb!XkS`~9mcP|Z5g+1facP|U*1hy87mx!?S(vwX4 zv3RMZx!jdS0ho`-fa^7dHEO-el$Ss@ZdrJLyAzSOL=!AUcq2$^C+y@nb{eosf3!Gn z$!w;gzjk%UQlO6Mq0_B*a+aOf?bmoyQc(P;h*Ob6^ zl4~USq+sPMMNwJG^Jya8T`X*c3T8gD9qqKR?e-LtaVUNyJ%GV;%|{2E!1g|+Ug+3YT+0 z$8VLyjoU@>>`JDaI z)N9`f82sGe{&UjEF;{?QqBVJ5SVP16jEH^CS+MB|7w$|i> z`dyRjioH5JKIdBW@yRtRNm-M#uNsTrOD5Y5-dJ@!8ZOH_tziO6+6}y#Y5~FL(`T$8 z_$SFU42i|J$#`AR8rMsbI-fz(o9dr=Ikj%51)4}ZkB>MIHR_3@YV{aR$^l7-9+0qi z`+WRJ$qe}UwB&ZnBGxDOtR@r4jY}ej)I5aoxFE+ z2#oc!ca*Dqo9XC;{)-+5I-pYw?Lr&7vwG7=r|72}_ zZ>ww#JgCD^PD8vBeLtmyyE|JKXYVL*y$H?f{UQk%N|%g0Mr4aAs{C|3L}|TGP^*N^=b^tNikHnHc2w&Yc4TxnG^M!H(R{Vk zwF8LHc*Z2VhA@=laC+P*4KXXdu{hf)$Tsv=qwjB0(7ZLxmn4*d2NoY7=03XPR#ux%7 zk}oa*8)#4E2CSH0_i6C}fq?(opDD#2G$HY+HNJki#zo9ZFjtd$srYt+54*bK9(AB6cT;P}Hw!yhp}G#UHEndGIY`YG zcSWuCn~=}jm95)bi6l25$#smTHLM*1$KN_b>ZcD8w(9)w_0W(ASz>6DRU?hd>#uT+ z%4GFCprzP>z%)$O#irCcO0_sy&zMrJlyb9%Nhw{2=w&+y)V4|ot4-}Da6L}#l~P;6 zB~>mL56$3wT}uW#URz^|T60fIr|hrMUhR-U^4ZpC0ef}6BEP1YK+J0I)i1JozAB&{?;oVKrZ|(G?)(%b8nx|on zA#;&pFRRRibB|nCCejTd6PR_~XfI|g$ch64w#Fyb)I_Y&9H9Gh0Gl**MklYg-HKUu zH#?J|z>cop!T=rMEP}H`zCmq15W(?+v39e3|?nx@cKD9o&-5gBv5xCi-; zPt=~&&nWB|wDKegg+bSKX2{V}{YukQDV`7mP`vhgpG^p*h7)D`PI-o-MT@!i#HIF{`9ah#^GU`GavL%J_(F z?I!vWn1R2$NW}2jXC3uAMbb9AG5esVgY+!P$Q9bUow83DJlW0b#P~r4W}-b60e_P0 zFxRWCk9Yi_-U44&moDdF#T~A^gv{~LMgRPHI38sogno)b6ERmc9?#_oh@`CeZ z0Zrg#YEiDtX{nA(n8-YjIacXvV1&$+^Pwh-u^>{@tV2!f3@EucFF}epL#`mD;Hr6{ za%I1Q*8edUV@ld`o4;%=^@Txc$29+h>_W)Kt44y#(HLo2CDg$Xqq8~{t$0D(4(KqP zil4CO{g~f~X?sGo@{(n5_nG`p)8302z2*~o6jIe{D<5N_NyX$a)mt$dPhLzTEvTYd z764QLI=eMrWfz`|4I;xkbO6d03V7ZTeZmP=O?W#2^TeH5TP9|+d6v|YUC%VH%ITKM zjykC*GSK9V|vejS=8pHY<0rI^dBo>xv~-TAJ;ns$Vatg*+Kp8=`Y*z?TK0nWL1 z-<7Q3?&3fA#cG1HH*Ydt^_kalzhbp)ujNv49Mr7D3(o6Mj)}@bb-P-w7$;2}EEBt{8A6N< z1TLq$W^`Qn96Hb#guf9W&)CGUxHDU|t2OzB&o+hIrBE%;>h@8ey#0`-QAM0p*mC_D zDH{LBv(otVO}G&F64TeQwB8)V1+I0=68LPH_ZkZ~N%PCu)72SOIz;nchwfCG5>&A7mD^$%od{>i6A6fML zMbge<(pcLHg~ah{@6hPEMnc3H_B?ar^nWId-G>wCeL4rfrG}-fPp@zo8n!B=8pu9} zGIuyjqbY1Zo6ti3L?$oZTC;)IBN_Zjci=s@VBhBx{fq;HY5Oxdbs44J;x*sw&Bwd> z-k;ead0#cgCve0}QRqb+@#tEyRZ=fI*na^T&27Mw?oUxzjjU?&QHp?#eS4lsFlB<=-_lr zjSzMMRgp>Hmeha8hy3+riw~Y<#rh#iHM^(!my{Ue99Qv|l!UQk4P!?r!{!F4!M_~8 z)kOY24G9kodtTgO*%E7?ENvdmz=buri5?{)VEai$x3E_WS|wZuDBNQ>r_pl1W5Sw5 z)A_)_?1y>U1QVJ|z&b+^c2jWJIAr)$j?PR!h2M*Lfjh8HO=#e8<2rktztqS%6&399 zYL|CDCV4q5C(z8-@u`-@Ur>=9TwPO6$-!$eQ*nP1!}DIL*67vs=SOdcLscK__Hia; zdr7->&;*-_EeC|jOfpImuzxMoq9=h}s3qehJiT~NBPEd0&I zWmQANQ!7fZDhtnFP!nEIQ(aa*Z&Ya7qRQ~-{P0w5^UUP3r8Q;Y%0&yR7gdA}AEQF$ zWffP{%nvV`7p@j^XNE&s8#r&#qPgKRs#K5&FAdMBt*R=ks0mkBmX*yVYhiV0aoL=j zMO9~>Su(k#s;soUe9@ee1r^n0RW&wdZrQxj+VYx`(#p!Rin$_}Ii(d9i)zAir~^aQ zHFM8Ab8gx9YRkgqrBzpyRfTKjmsW%qmM$r&UT|ΜHN$=SS+w&&5+~POq6y?YW~z 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 literal 80888 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 Nw1x|;sDUzX_#bI&oE888 diff --git a/snake.h b/snake.h index aa0b5a1..df6f923 100644 --- a/snake.h +++ b/snake.h @@ -4,18 +4,39 @@ #include #include #include -#include +#include #include #include #include +#include + using namespace std; using std::chrono::system_clock; using namespace std::this_thread; -char direction = 'r'; +char direction='r'; +vector top_scores; +bool paused = false; +void load_top_scores() { + ifstream infile("top_scores.txt"); + int s; + top_scores.clear(); + while (infile >> s) { + top_scores.push_back(s); + } + infile.close(); + sort(top_scores.rbegin(), top_scores.rend()); + if (top_scores.size() > 10) top_scores.resize(10); +} + +void save_top_scores() { + ofstream outfile("top_scores.txt"); + for (int s : top_scores) { + outfile << s << endl; + } + outfile.close(); +} -bool paused = false; // global flag -void input_handler() -{ +void input_handler(){ struct termios oldt, newt; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; @@ -23,97 +44,79 @@ void input_handler() tcsetattr(STDIN_FILENO, TCSANOW, &newt); map keymap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}}; - while (true) - { + + while (true) { char input = getchar(); - if (keymap.find(input) != keymap.end()) - { + if (keymap.find(input) != keymap.end()) { direction = keymap[input]; - } - else if (input == 'p') - { - paused = !paused; // toggle pause/resume - } - else if (input == 'q') - { + }else if(input == 'p') { + paused = !paused; + } + else if (input == 'q'){ exit(0); } } tcsetattr(STDIN_FILENO, TCSANOW, &oldt); } -void render_game(int size, deque> &snake, pair food, pair poison) -{ - for (size_t i = 0; i < size; i++) - { - for (size_t j = 0; j < size; j++) - { - if (i == food.first && j == food.second) - { - cout << "🍎"; - } - else if (i == poison.first && j == poison.second) - { - cout << "☠️"; - } - else if (find(snake.begin(), snake.end(), make_pair(int(i), int(j))) != snake.end()) - { + +void render_game(int size, deque> &snake, pair food, pair poison) { + for (size_t i = 0; i < size; i++) { + for (size_t j = 0; j < size; j++) { + if (i == food.first && j == food.second) { + cout << "🍎"; + } else if (i == poison.first && j == poison.second) { + cout << "☠️"; + } else if (find(snake.begin(), snake.end(), make_pair(int(i), int(j))) != snake.end()) { cout << "🐍"; - } - else - { - cout << "⬜"; + } else { + cout << "⬜"; } } cout << endl; } } -pair get_next_head(pair current, char direction) -{ - pair next; - if (direction == 'r') - { - next = make_pair(current.first, (current.second + 1) % 10); - } - else if (direction == 'l') - { - next = make_pair(current.first, current.second == 0 ? 9 : current.second - 1); - } - else if (direction == 'd') - { - next = make_pair((current.first + 1) % 10, current.second); - } - else if (direction == 'u') + + + +pair get_next_head(pair current, char direction){ + pair next; + if(direction =='r'){ + next = make_pair(current.first,(current.second+1) % 10); + }else if (direction=='l') { - next = make_pair(current.first == 0 ? 9 : current.first - 1, current.second); - } + next = make_pair(current.first, current.second==0?9:current.second-1); + }else if(direction =='d'){ + next = make_pair((current.first+1)%10,current.second); + }else if (direction=='u'){ + next = make_pair(current.first==0?9:current.first-1, current.second); + } return next; + } -pair generate_food(int size, const deque> &snake) -{ - pair food; - do - { +pair generate_food(int size, const deque> &snake) { + pair food; + do { food = make_pair(rand() % size, rand() % size); } while (find(snake.begin(), snake.end(), food) != snake.end()); return food; } -pair generate_poison(int size, const deque> &snake, pair food) -{ - pair poison; - do - { +pair generate_poison(int size, const deque> &snake, pair food) { + pair poison; + do { poison = make_pair(rand() % size, rand() % size); } while ( - find(snake.begin(), snake.end(), poison) != snake.end() || poison == food); + find(snake.begin(), snake.end(), poison) != snake.end() || poison == food + ); return poison; } -void game_play() -{ +void game_play() { + load_top_scores(); + system("clear"); deque> snake; snake.push_back(make_pair(0, 0)); @@ -121,70 +124,83 @@ void game_play() pair food = generate_food(10, snake); pair poison = generate_poison(10, snake, food); - int food_eaten = 0; - int speed = 500; - int score = 0; - int poison_timer = 0; - pair head = make_pair(0, 1); - while (true) - { - cout << "\033[H"; - - while (paused) - { - system("clear"); - render_game(10, snake, food, poison); - cout << "=== PAUSED ===" << endl; - cout << "Press 'p' to resume..." << endl; - sleep_for(std::chrono::milliseconds(200)); - system("clear"); - } + int food_eaten = 0; + int speed = 500; + int score = 0; + int poison_timer = 0; - head = get_next_head(head, direction); +pair head = make_pair(0, 1); +while (true) { + cout << "\033[H"; - if (find(snake.begin(), snake.end(), head) != snake.end()) - { - system("clear"); - cout << "Game Over" << endl; - exit(0); - } - else if (head == poison) - { - system("clear"); - cout << "Game Over ( Snake ate poison ☠️ )" << endl; - exit(0); - } - else if (head.first == food.first && head.second == food.second) - { - food = generate_food(10, snake); - snake.push_back(head); - food_eaten++; - score += 10; - - if (food_eaten % 10 == 0 && speed > 100) - { - speed += 50; - } - } - else - { - snake.push_back(head); - snake.pop_front(); - } + while (paused) { + system("clear"); + render_game(10, snake, food, poison); + cout << "=== PAUSED ===" << endl; + cout << "Press 'p' to resume..." << endl; + sleep_for(std::chrono::milliseconds(200)); + system("clear"); + } - poison_timer += speed; // add time passed in this loop - if (poison_timer >= 5000) - { - poison = generate_poison(10, snake, food); - poison_timer = 0; - } + head = get_next_head(head, direction); - render_game(10, snake, food, poison); - cout << "length of snake: " << snake.size() << endl; - cout << "Score: " << score << endl; - cout << "food eaten: " << food_eaten << " | current speed: " << speed << "ms" << endl; + if (find(snake.begin(), snake.end(), head) != snake.end()) { + system("clear"); + + top_scores.push_back(score); + sort(top_scores.rbegin(), top_scores.rend()); + if (top_scores.size() > 10) top_scores.resize(10); + save_top_scores(); + + cout << "Game Over! Snake hit itself." << endl; + cout << "Top 10 Scores:" << endl; + for (int s : top_scores) cout << s << endl; - sleep_for(std::chrono::milliseconds(speed)); + exit(0); +} +else if (head == poison) { + system("clear"); + + // Update top scores and save + top_scores.push_back(score); + sort(top_scores.rbegin(), top_scores.rend()); + if (top_scores.size() > 10) top_scores.resize(10); + save_top_scores(); + + cout << "Game Over! Snake ate poison ☠️." << endl; + cout << "Top 10 Scores:" << endl; + for (int s : top_scores) cout << s << endl; + + exit(0); +} + + + else if (head.first == food.first && head.second == food.second) { + food = generate_food(10, snake); + snake.push_back(head); + food_eaten++; + score += 10; + + if (food_eaten % 10 == 0 && speed > 100) { + speed += 50; + } + } else { + snake.push_back(head); + snake.pop_front(); + } + + poison_timer += speed; // add time passed in this loop + if (poison_timer >= 5000) { + poison = generate_poison(10, snake, food); + poison_timer = 0; } + + render_game(10, snake, food, poison); + cout << "length of snake: " << snake.size() << endl; + cout << "Score: " << score << endl; + cout << "food eaten: " << food_eaten << " | current speed: " << speed << "ms" << endl; + + sleep_for(std::chrono::milliseconds(speed)); +} } \ No newline at end of file diff --git a/top_scores.txt b/top_scores.txt new file mode 100644 index 0000000..d5de79d --- /dev/null +++ b/top_scores.txt @@ -0,0 +1,3 @@ +20 +20 +0 From 4eef57a3ad30281ab048b9b6ffcf62df4161ca92 Mon Sep 17 00:00:00 2001 From: Krishnnavadiya <139139071+Krishnnavadiya@users.noreply.github.com> Date: Fri, 26 Sep 2025 17:28:28 +0530 Subject: [PATCH 6/6] refactor: clean up snake game codebase for readability and maintainability --- main.cpp | 21 +++- snake | Bin 124520 -> 91992 bytes snake.h | 336 ++++++++++++++++++++++++------------------------- snake_test.cpp | 45 ++++--- 4 files changed, 201 insertions(+), 201 deletions(-) diff --git a/main.cpp b/main.cpp index ef65093..c46cbff 100644 --- a/main.cpp +++ b/main.cpp @@ -1,9 +1,18 @@ +#include #include "snake.h" int main(int argc, char *argv[]) { - thread input_thread(input_handler); - thread game_thread(game_play); - input_thread.join(); - game_thread.join(); -return 0; -} \ No newline at end of file + int boardSize = 8; + if (argc > 1) { + int requestedSize = atoi(argv[1]); + if (requestedSize == 7 || requestedSize == 8) { + boardSize = requestedSize; + } + } + Game snakeGame(boardSize); + std::thread inputThread(&Game::runInput, &snakeGame); + std::thread gameThread(&Game::runLoop, &snakeGame); + inputThread.join(); + gameThread.join(); + return 0; +} diff --git a/snake b/snake index f67148923eafbd0eb2f7f0fce0a5f52b099ce829..f38cafc1b6f29b7b30de55bce90350f9c3c41f7d 100644 GIT binary patch literal 91992 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 literal 124520 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ΜHN$=SS+w&&5+~POq6y?YW~z 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 diff --git a/snake.h b/snake.h index df6f923..fa97efe 100644 --- a/snake.h +++ b/snake.h @@ -1,206 +1,192 @@ +#ifndef SNAKE_H +#define SNAKE_H + #include #include #include #include -#include -#include -#include +#include #include #include #include -#include +#include + +#ifdef _WIN32 +#include +#include +#else +#include +#include +#endif using namespace std; -using std::chrono::system_clock; +using namespace std::chrono_literals; using namespace std::this_thread; -char direction='r'; -vector top_scores; -bool paused = false; -void load_top_scores() { - ifstream infile("top_scores.txt"); - int s; - top_scores.clear(); - while (infile >> s) { - top_scores.push_back(s); - } - infile.close(); - sort(top_scores.rbegin(), top_scores.rend()); - if (top_scores.size() > 10) top_scores.resize(10); -} -void save_top_scores() { - ofstream outfile("top_scores.txt"); - for (int s : top_scores) { - outfile << s << endl; +class Snake { +public: + explicit Snake(int boardSize) + : boardSize_(boardSize) { + bodySegments_.push_back(make_pair(0, 0)); } - outfile.close(); -} -void input_handler(){ - struct termios oldt, newt; - tcgetattr(STDIN_FILENO, &oldt); - newt = oldt; - newt.c_lflag &= ~(ICANON | ECHO); - tcsetattr(STDIN_FILENO, TCSANOW, &newt); - map keymap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}}; - - - while (true) { - char input = getchar(); - if (keymap.find(input) != keymap.end()) { - direction = keymap[input]; - }else if(input == 'p') { - paused = !paused; - } - else if (input == 'q'){ - exit(0); + static pair computeNextHead(const pair& currentHead, char moveDirection, int boardSize) { + pair nextHead = currentHead; + if (moveDirection == 'r') { + nextHead = make_pair(currentHead.first, (currentHead.second + 1) % boardSize); + } else if (moveDirection == 'l') { + nextHead = make_pair(currentHead.first, currentHead.second == 0 ? boardSize - 1 : currentHead.second - 1); + } else if (moveDirection == 'd') { + nextHead = make_pair((currentHead.first + 1) % boardSize, currentHead.second); + } else if (moveDirection == 'u') { + nextHead = make_pair(currentHead.first == 0 ? boardSize - 1 : currentHead.first - 1, currentHead.second); } + return nextHead; } - tcsetattr(STDIN_FILENO, TCSANOW, &oldt); -} + const deque>& body() const { return bodySegments_; } + pair head() const { return bodySegments_.back(); } -void render_game(int size, deque> &snake, pair food, pair poison) { - for (size_t i = 0; i < size; i++) { - for (size_t j = 0; j < size; j++) { - if (i == food.first && j == food.second) { - cout << "🍎"; - } else if (i == poison.first && j == poison.second) { - cout << "☠️"; - } else if (find(snake.begin(), snake.end(), make_pair(int(i), int(j))) != snake.end()) { - cout << "🐍"; - } else { - cout << "⬜"; - } - } - cout << endl; + bool contains(const pair& cellPos) const { + return find(bodySegments_.begin(), bodySegments_.end(), cellPos) != bodySegments_.end(); } -} + bool willCollideWithSelf(const pair& nextHead) const { + return contains(nextHead); + } + void growTo(const pair& nextHead) { + bodySegments_.push_back(nextHead); + } + void moveTo(const pair& nextHead) { + bodySegments_.push_back(nextHead); + bodySegments_.pop_front(); + } -pair get_next_head(pair current, char direction){ - pair next; - if(direction =='r'){ - next = make_pair(current.first,(current.second+1) % 10); - }else if (direction=='l') - { - next = make_pair(current.first, current.second==0?9:current.second-1); - }else if(direction =='d'){ - next = make_pair((current.first+1)%10,current.second); - }else if (direction=='u'){ - next = make_pair(current.first==0?9:current.first-1, current.second); +private: + int boardSize_; + deque> bodySegments_; +}; + +class Renderer { +public: + void render(int boardSize, const deque>& snakeBody, const pair& foodPos) { + cout << "Snake Game" << endl; + for (size_t row = 0; row < static_cast(boardSize); row++) { + for (size_t col = 0; col < static_cast(boardSize); col++) { + if (static_cast(row) == foodPos.first && static_cast(col) == foodPos.second) { + cout << "🍎"; + } else if (find(snakeBody.begin(), snakeBody.end(), make_pair(int(row), int(col))) != snakeBody.end()) { + cout << "🐍"; + } else { + cout << "⬜"; + } + } + cout << endl; } - return next; - -} - -pair generate_food(int size, const deque> &snake) { - pair food; - do { - food = make_pair(rand() % size, rand() % size); - } while (find(snake.begin(), snake.end(), food) != snake.end()); - return food; -} - -pair generate_poison(int size, const deque> &snake, pair food) { - pair poison; - do { - poison = make_pair(rand() % size, rand() % size); - } while ( - find(snake.begin(), snake.end(), poison) != snake.end() || poison == food - ); - return poison; -} - -void game_play() { - load_top_scores(); - - system("clear"); - deque> snake; - snake.push_back(make_pair(0, 0)); - - pair food = generate_food(10, snake); - pair poison = generate_poison(10, snake, food); - - - int food_eaten = 0; - int speed = 500; - int score = 0; - int poison_timer = 0; - -pair head = make_pair(0, 1); -while (true) { - cout << "\033[H"; - - while (paused) { - system("clear"); - render_game(10, snake, food, poison); - cout << "=== PAUSED ===" << endl; - cout << "Press 'p' to resume..." << endl; - sleep_for(std::chrono::milliseconds(200)); - system("clear"); } - - head = get_next_head(head, direction); - - if (find(snake.begin(), snake.end(), head) != snake.end()) { - system("clear"); - - top_scores.push_back(score); - sort(top_scores.rbegin(), top_scores.rend()); - if (top_scores.size() > 10) top_scores.resize(10); - save_top_scores(); - - cout << "Game Over! Snake hit itself." << endl; - cout << "Top 10 Scores:" << endl; - for (int s : top_scores) cout << s << endl; - - exit(0); -} -else if (head == poison) { - system("clear"); - - // Update top scores and save - top_scores.push_back(score); - sort(top_scores.rbegin(), top_scores.rend()); - if (top_scores.size() > 10) top_scores.resize(10); - save_top_scores(); - - cout << "Game Over! Snake ate poison ☠️." << endl; - cout << "Top 10 Scores:" << endl; - for (int s : top_scores) cout << s << endl; - - exit(0); -} - - - else if (head.first == food.first && head.second == food.second) { - food = generate_food(10, snake); - snake.push_back(head); - food_eaten++; - score += 10; - - if (food_eaten % 10 == 0 && speed > 100) { - speed += 50; +}; + +class InputHandler { +public: + InputHandler() : currentDirection_('r') {} + + char direction() const { return currentDirection_.load(); } + + void run() { +#ifdef _WIN32 + map keyMap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}, {'q', 'q'}}; + for (;;) { + if (_kbhit()) { + char userInput = _getch(); + if (keyMap.find(userInput) != keyMap.end()) { + currentDirection_.store(keyMap[userInput]); + } else if (userInput == 'q') { + system("cls"); + exit(0); + } + } + sleep_for(10ms); + } +#else + struct termios oldSettings, newSettings; + tcgetattr(STDIN_FILENO, &oldSettings); + newSettings = oldSettings; + newSettings.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &newSettings); + map keyMap = {{'d', 'r'}, {'a', 'l'}, {'w', 'u'}, {'s', 'd'}, {'q', 'q'}}; + while (true) { + char userInput = getchar(); + if (keyMap.find(userInput) != keyMap.end()) { + currentDirection_.store(keyMap[userInput]); + } else if (userInput == 'q') { + tcsetattr(STDIN_FILENO, TCSANOW, &oldSettings); + exit(0); + } } - } else { - snake.push_back(head); - snake.pop_front(); + tcsetattr(STDIN_FILENO, TCSANOW, &oldSettings); +#endif } - poison_timer += speed; // add time passed in this loop - if (poison_timer >= 5000) { - poison = generate_poison(10, snake, food); - poison_timer = 0; +private: + atomic currentDirection_; +}; + +class Game { +public: + Game(int boardSize = 8) + : boardSize_(boardSize), + snake_(boardSize_), + inputHandler_(), + renderer_(), + foodPos_(make_pair(rand() % boardSize_, rand() % boardSize_)) {} + + void runInput() { inputHandler_.run(); } + + void runLoop() { +#ifdef _WIN32 + system("cls"); +#else + system("clear"); +#endif + pair currentHead = make_pair(0, 1); + for (;;) { + cout << "\033[H"; + char moveDir = inputHandler_.direction(); + currentHead = Snake::computeNextHead(currentHead, moveDir, boardSize_); + + if (snake_.willCollideWithSelf(currentHead)) { +#ifdef _WIN32 + system("cls"); +#else + system("clear"); +#endif + cout << "Game Over" << endl; + exit(0); + } else if (currentHead.first == foodPos_.first && currentHead.second == foodPos_.second) { + foodPos_ = make_pair(rand() % boardSize_, rand() % boardSize_); + snake_.growTo(currentHead); + } else { + snake_.moveTo(currentHead); + } + + renderer_.render(boardSize_, snake_.body(), foodPos_); + cout << "Snake length: " << snake_.body().size() << endl; + sleep_for(500ms); + } } - render_game(10, snake, food, poison); - cout << "length of snake: " << snake.size() << endl; - cout << "Score: " << score << endl; - cout << "food eaten: " << food_eaten << " | current speed: " << speed << "ms" << endl; +private: + int boardSize_; + Snake snake_; + InputHandler inputHandler_; + Renderer renderer_; + pair foodPos_; +}; - sleep_for(std::chrono::milliseconds(speed)); +inline pair get_next_head(pair currentHead, char moveDirection){ + return Snake::computeNextHead(currentHead, moveDirection, 10); } -} \ No newline at end of file + +#endif // SNAKE_H diff --git a/snake_test.cpp b/snake_test.cpp index 42f8561..ff133b4 100644 --- a/snake_test.cpp +++ b/snake_test.cpp @@ -1,31 +1,38 @@ #include #include "snake.h" - -TEST(SnakeBehaviour, NextHeadRight) { - pair current = make_pair(rand() % 10, rand() % 10); - EXPECT_EQ(get_next_head(current, 'r'),make_pair(current.first,current.second+1)); - +TEST(SnakeBehaviour, NextHeadRightWraps) { + pair currentPos = make_pair(3, 9); + EXPECT_EQ(Snake::computeNextHead(currentPos, 'r', 10), make_pair(3, 0)); } - -TEST(SnakeBehaviour, NextHeadLeft) { - pair current = make_pair(rand() % 10, rand() % 10); - EXPECT_EQ(get_next_head(current, 'l'),make_pair(current.first,current.second-1)); - +TEST(SnakeBehaviour, NextHeadLeftWraps) { + pair currentPos = make_pair(4, 0); + EXPECT_EQ(Snake::computeNextHead(currentPos, 'l', 10), make_pair(4, 9)); } -TEST(SnakeBehaviour, NextHeadUp) { - pair current = make_pair(rand() % 10, rand() % 10); - EXPECT_EQ(get_next_head(current, 'u'),make_pair(current.first-1,current.second)); +TEST(SnakeBehaviour, NextHeadUpWraps) { + pair currentPos = make_pair(0, 7); + EXPECT_EQ(Snake::computeNextHead(currentPos, 'u', 10), make_pair(9, 7)); } -TEST(SnakeBehaviour, NextHeadDown) { - pair current = make_pair(rand() % 10, rand() % 10); - EXPECT_EQ(get_next_head(current, 'd'),make_pair(current.first+1,current.second)); - +TEST(SnakeBehaviour, NextHeadDownWraps) { + pair currentPos = make_pair(9, 2); + EXPECT_EQ(Snake::computeNextHead(currentPos, 'd', 10), make_pair(0, 2)); } +TEST(SnakeClass, GrowAndMoveBehaviour) { + Snake testSnake(10); + // Start with one segment at (0,0); grow to (0,1), then move to (0,2) + pair nextPos = Snake::computeNextHead(make_pair(0,0), 'r', 10); + testSnake.growTo(nextPos); + EXPECT_EQ(testSnake.body().size(), 2u); + + nextPos = Snake::computeNextHead(testSnake.head(), 'r', 10); + testSnake.moveTo(nextPos); + EXPECT_EQ(testSnake.body().size(), 2u); + EXPECT_EQ(testSnake.head(), make_pair(0,2)); +} /** * g++ -o my_tests snake_test.cpp -lgtest -lgtest_main -pthread; @@ -34,7 +41,6 @@ TEST(SnakeBehaviour, NextHeadDown) { The first part is the compilation: g++ -o my_tests hello_gtest.cpp -lgtest -lgtest_main -pthread - * g++: This invokes the GNU C++ compiler. * -o my_tests: This tells the compiler to create an executable file named my_tests. @@ -45,5 +51,4 @@ TEST(SnakeBehaviour, NextHeadDown) { Test, which saves you from writing your own main() to run the tests. * -pthread: This links the POSIX threads library, which is required by Google Test for its operation. - * -*/ \ No newline at end of file + */