From ad605dd7a2028a74e53f7cbbeda71a283249cd27 Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Mon, 12 May 2025 11:22:00 -0400 Subject: [PATCH] feat: fruit now spawns on map and can be collect to add to score --- .../index/fruit.cpp.80CA8E09C6743CC5.idx | Bin 0 -> 1120 bytes .../index/fruit.hpp.B7520D20FB102EAE.idx | Bin 0 -> 728 bytes .../index/globals.hpp.3DF8F8245B52D37B.idx | Bin 0 -> 314 bytes .../index/input.cpp.540A9D56E66246B1.idx | Bin 0 -> 708 bytes .../index/input.hpp.82943EF4CB7EC1AF.idx | Bin 0 -> 362 bytes .../index/main.cpp.C070F90AD8D66EE4.idx | Bin 0 -> 1394 bytes .../index/point.cpp.5A6C80E33F52E8D8.idx | Bin 0 -> 1096 bytes .../index/point.hpp.1A777AC8437A8313.idx | Bin 0 -> 928 bytes .../index/snake.cpp.60A7519252B9A7E3.idx | Bin 0 -> 726 bytes .../index/snake.hpp.8322EDE86440CED8.idx | Bin 0 -> 484 bytes .../index/window.cpp.CFB09F5DADCCC8C6.idx | Bin 0 -> 1354 bytes .../index/window.hpp.2E6429FBACC19FAB.idx | Bin 0 -> 836 bytes .clangd | 2 ++ CMakeLists.txt | 2 +- compile_commands.json | 1 + include/fruit.hpp | 1 + src/fruit.cpp | 10 +++++++-- src/main.cpp | 14 +++++++----- src/point.cpp | 7 +++++- walkup.sh | 21 ------------------ 20 files changed, 27 insertions(+), 31 deletions(-) create mode 100644 .cache/clangd/index/fruit.cpp.80CA8E09C6743CC5.idx create mode 100644 .cache/clangd/index/fruit.hpp.B7520D20FB102EAE.idx create mode 100644 .cache/clangd/index/globals.hpp.3DF8F8245B52D37B.idx create mode 100644 .cache/clangd/index/input.cpp.540A9D56E66246B1.idx create mode 100644 .cache/clangd/index/input.hpp.82943EF4CB7EC1AF.idx create mode 100644 .cache/clangd/index/main.cpp.C070F90AD8D66EE4.idx create mode 100644 .cache/clangd/index/point.cpp.5A6C80E33F52E8D8.idx create mode 100644 .cache/clangd/index/point.hpp.1A777AC8437A8313.idx create mode 100644 .cache/clangd/index/snake.cpp.60A7519252B9A7E3.idx create mode 100644 .cache/clangd/index/snake.hpp.8322EDE86440CED8.idx create mode 100644 .cache/clangd/index/window.cpp.CFB09F5DADCCC8C6.idx create mode 100644 .cache/clangd/index/window.hpp.2E6429FBACC19FAB.idx create mode 100644 .clangd create mode 120000 compile_commands.json delete mode 100755 walkup.sh diff --git a/.cache/clangd/index/fruit.cpp.80CA8E09C6743CC5.idx b/.cache/clangd/index/fruit.cpp.80CA8E09C6743CC5.idx new file mode 100644 index 0000000000000000000000000000000000000000..86dd2d7802fefffc47f792ca6a1f45b202e0cd1e GIT binary patch literal 1120 zcmWIYbaRVfVPJ4h@vO*AElC728AO1%xTGjEh>?L|12Y3d#hjzT7qgrUdETCX<5{)X z=$pci4Vs4}j2zkadFDLcx_P^<=la9@N_Y<)x_1+?#JZN`-ZK zU;DYgOs^15V&s|jGP(J;1Cw#z`;<)wGR&Accc>N|{BbQvagK7z=D=GTZ&UPTlEbXD z&Z=xob-raK_ixIcPZt-k-&7E8nVY@9v6E3~mhLsy1e>;7^ZHWvM}J+VSFzpdp2Pmt z4-8e`^Q4J4A2>86OUsAT%`k<__4|ynC&@}}Gmr1-yTjpganCvNP^;LQ!)K1`KTqEn zUAk0t^|i`s-H00pW<^ieo;;~3Od?EA##^ga!k0VaQH`SfhtR_JlY(7Me|Gi%PFOHu zc6)W|41>!?uHu`brn4|N?BDu)!Cw=Wgm=IEQxC3VciW^J`zu}WrfJEv534WQMefyn zyR$d`_YNn0^OPMjeV>{&R{I~?;-64lnVS>~4B-ng_O}CFJG2CtBm@}5`FZ#SMR_=R z_!u~VazJoWRzm*M;fNqHCVrqaD?2NXC>IMCCrsMe-#c&JPLW&zCLy3SCl9BDC^sj! zC`_86C^fBEhKYgU;(uA!j8-X8Mj3H7PBuQ6sW8hKrNB0SyFE4Kh`8XfZ_()orZ{Mr zF!6}4gBW5U0s=%~3l83a@R$E z&a$pMZDSRlyKM7Uuj6l#zu;qT?QL$m>T(K4h{(-}ZtEXyxz={zOnI|ZdZftnY4J>t zSNv^!bnLpsO%?ltpD;>KTiYs%I zZUgPT5MzHk(6vKLfQb|6LJ(l#;pE|C;DB&W%1X$8Ivf!s#>5Dd=3?REgh@O5d*`j& zDUvI|#0-<>=HwQINiV)~VbQ;Bf1CK2*q9ht*ag|ezywTsS6krX?@FO7_?Xy%(wtnJ zf?xtB{q6SDlq2GT$Jm${fv#d@XXODC44h!6F|x4kSo6v9p7_P{d`uib{cM74VqgNM zpP?u4g-3)(5~d2sljl)^@n8V})C=-BOm9|0 zx5)jY{uzuw)!ICIFx9Z|0ICLs15EYfj86;eN|@_GsttKeV5(uk!^i~=7MN;SumFWY zVFD9|(M(*BV1Psr0}qP3w)|#V8)g)K9H^I(gHaHwh5;5*Kw(fY!Hk-B&9J#B(1Nq|{^8m~ zT+yFS?$fHuUie7QO=SMO12=->VlRE$k^hU)fnD(_Lvdwpk`vITtcGrp`$zpVco~3B zVr3C$kpdG8oIp7iW=2-l#~Gg%)|D{V^D;026)=l4OMwZ5f}+&4Vpk-S7`Y%O0EIw+ zNqBpQ^*Z+~pfDo`qcB8}fdOVLP#9z;Oqii4H760oDK1Jb<_0lX|HeAZmgm!zU|;|M DOKnso literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/input.cpp.540A9D56E66246B1.idx b/.cache/clangd/index/input.cpp.540A9D56E66246B1.idx new file mode 100644 index 0000000000000000000000000000000000000000..762d74c1970e4dc63be93e4e7fef1df9d3a18142 GIT binary patch literal 708 zcmWIYbaUIo#K7R3;#rZKT9U}Zz`!5^#Kk2=nZ}F^43~g%6?3)*9n4}f6gd0e!zj#) zzo~tZ$Py3nB@cX$rR1uZwNtP4{cVice)8fP zx!x&phjt5aCzSZa^U5i6hRm@$S;q8v6;tO9^$!=@?gc8wD5c!i$esGFNW^btu$AUn zm6hq1kOhXw_jMaghTSJ+-s%{jLC1?lC33Yvm3WPD1Xl5bBt?V zG2gwU=fNU3ZY(;MaL&Mg4aTgk$P8|tgePbuIok@F3{_Eb8&X2^?_Ezkja`f%h z-f3^DCbxcCkzyXv4fuhv3;x9m2_M?&SbH@-lMjl~iR%R}k zwq2SUTJL;WtbxLuf}CPtEkL62V#s!xoc}gVKw(BsKA37AVQv;~K^TwmVD+f$7_p)FX z>r<~6Gm3!S1rxr*F~O~-UGxzn3yLtm<;cTI)_VRdrr1^?$6F=ZBM?|8FhQUhX&_ply|J1@FYV*9<#o_7v( zFWJjC|Nico#mhKV|G2t)go*|oYMU(=aYNOCp|~_;Qt=Z+zAY)nAsFf+3= z^MDBkPM{nE10yqQHrW;zn37F zS1-Tq>iUP1bt8FX{-z()T6gv2$z4GV?4mIRw?ePv%(!cQM)vqI*@xRq-^(6NQ+Qcl z)1Jy4t5}!I?p9kp|6=Xze>u$N(_d`)m3E}kwcwgoWR@aDG9e$DNoBcOSm^ zU$uY7l*ZL>Z>ie!?eD5|4D>&7U?tCT4UL(XHUHdYww|~D>66djI#}NCYq-cRQO&sC zQNnP8H{X8-g+J^YiYs%IW&`8FK>Uit<99`oJPfi73{nCt0vuohC<6xKf9m3EUj3ZU z%OD4o=4RvO1`{ypC!9+|eSbDC=4FruO7pStaf1n%^qYAfa*wTQ+RDoy1C-`vPu(QetdkaGvZ(Bj4waA##j7QoIbjtS}cH>0R>Xzw}oVpphU?!Mu6H z=6<-U$O;FbY90n2HkeH(WhLZ49gYYBss{NH=Ia{GiEsIf|AaHiNQoMVn!p?&BPC`j zW((uNXhtcNfK9M|cWwSb?ku2@Vp3u-RQR76x7CJYNopyi;Lg~i&32jxGvt(>usNkmFiLlkZZ(3^&0#xT8(pVzS_?_)dy z^roncs47hO+wG|-N5ln>0d3-A;A4e_Gb|c_Hh~fe%%&Y{K3U!qzjz)LC?aB#Fheeg zh8g=N9DNE5Sy66LUYPKuq^kcaw>e(|RdX|Nv%-Q-_4qsIyQNIufX)@;7K5t>@|46> zV0wWmF((mZZE;a@aWjY^0U{tk6vkj+5JWH~5lnG7lTqr&&4h__KQ+X22?_}ai;GA| tii&}YL#PsAxKai&1XBRP6hbhQb5n9aGTeN;Ow6qO9DHmnoa|hTJOJ~u$>;z8 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/point.cpp.5A6C80E33F52E8D8.idx b/.cache/clangd/index/point.cpp.5A6C80E33F52E8D8.idx new file mode 100644 index 0000000000000000000000000000000000000000..6cb2fe406ec4faa0745b899301b619ff51c49541 GIT binary patch literal 1096 zcmWIYbaQiHVPJ4h@vO*AElC728AO1%xTGl4j*)@kArk{b#hk4{2eX(A1^z>cbgyc9^3fq-Z`s_1PCG(Q>=F#(&b(|`$Psx$ zK_!?=Hha>sPk*)_pUN#IyM%4#f$!T|#ezQw1j=vFV|aVvdfJU`mp9H@VQ8`2x;(*3 z?1RMO%~G3r?GCz$n{y?%xPF*fb8+vIc`+SF0xZw`K9Jia`fB@Ex1$R`GH;IC7q@P* zWrwu#&C+W#qYrkP9!aPTvvOmMO}Y_Tzb)k1h6vFMn@d}34y~Sa&(xhYu=e`qnGSjK z?^?@RbiTD3Gyk~n;#btZvw7cayQ!>yS%T7DzwU0c|GVU1WbmaQ(*Lba&ieGNL@2(L zm(`)TGB+s}7@F%Q++A#I{(h$blOR8X2s;nEpfE2dFCPO3P!0$jKd)m=-p6=EfJqc6 z%`D6;Bg`YfBMFl}Yi61C@cWWu5NU2{ZWUoZ2|h)bG(%BpTCqMbo;qL5oHs#DnVCsM zghic217<3a=f>g=X zW)hDG2L}f)%z(!kpBC1YFxP|3HDNc03G;~X@$kV-;t>%P5ro^4cysc!U(LrGfZmYg zmgIq1*Yx8|>I0ccQ$g0*v$!Bx$Il@GGk5a)&et1WB(DbsJqJ4n2TT~qz5lUqBx`{C`QS&-y2a7!xBC0~;p`CnuO--~h@2 zL6T9K*{DhDkGXK|&wuS00qG1bPJ+@Gzw?X8{8oS-2=QClRE(xG1?; c8N^@(5fH%Uc5MUm-#cyWOf0MnpiBq_031jzSO5S3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/snake.cpp.60A7519252B9A7E3.idx b/.cache/clangd/index/snake.cpp.60A7519252B9A7E3.idx new file mode 100644 index 0000000000000000000000000000000000000000..a6e91995a717aacfabc5230985a9cf670584c172 GIT binary patch literal 726 zcmWIYbaOk$#K7R3;#rZKT9U}Zz`!5^#Kk2=nU0JM3}1nA6?3)*9n4}f6gYeSi^|PF zOs_{$+aaq|G3l8oq`byE2HzfOjPO;ubsYL9QnpE zHuL1V;(Kx2VrI1=Gp2}?9NJL4aQc+z8zP=w+WdLuoyD7~r_WJZ^|k!Y`^__*^5ouK zwJT0z`2YHZ|L((g4&L#d|EcLQOU#sMoU@C?&HpZSjGp^AWyYc|hy`*s0yX6DawC6B_I+K)LraN1WSBw;zp@krcC4J*#pZ#QL~y0$HO zx=JKEJMg{grXM?4tJcmeZtHyYVeiZHennffbc-uD+fVq}7dumAxkOnRdYU%2{pH46bIHkdRUCz}{d`kGOZ z_mRpqg#t{hFlkl}R#BMrrKGC=Dz`abvM~XJf`yr#nFmZTaDr`OWMO3}N=+-C0p!74 z$;btE9ZVz4b&Qf=SHXl~t^x{!Tmut^xdtcEyMnQ-#85m&F mOk5C0LB)AcY${64Nd!q07bO>SgBUD%3%@5X3;gwqfdK&f-H4n3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/window.cpp.CFB09F5DADCCC8C6.idx b/.cache/clangd/index/window.cpp.CFB09F5DADCCC8C6.idx new file mode 100644 index 0000000000000000000000000000000000000000..e7d2b64e67f51afde56a2b7d680b03128787cd05 GIT binary patch literal 1354 zcmYL|drTZv6vk(#JHzh0c9`xCbBBe65-gAfkXHoE z8b~bC7Kv@Cq)m#@ZMD*>O{&qjQlKVii@e&3ltB2St~?s01vJ#VO>TFR$=rLs@1FBJ zb8=r#*|X;*0>hFDQ|c;;s`Hc>hH2qztF|6#R$y2x4Agx(^oG+C6v3?Zj~1m3osTp& zs{R=`b2UBn$T{Ouc*xc6hr$jxFY>EUqX-#QOQB!hR&*q8ANAv6X zjqeu!rTg#a&%yJ%7afEBH$hfd^Xb&qMGFx--{E|fvM*3EOX&{tC+%w+p_h^)vf49$ zeIevZ&0*7Q*(@2z9FKdmHD=SlVN?hVT&g-qhvd$DTabOLWT`&RJ{R4_jFym1ecJfE zhk`jiJ##!ib)YLdCTsR&y!H4E>Qc*M#@Dy1?A48rZ}%0gNnSd&55~%)LqZ8Z_O1CK)R&la+?B22H7JeYWL5#Qrg#W6mcFGv&(3T_2kc zjYnl>3??5k=Sz2HR$d$#$d)FyMrxDZ&zNp&9S+@R`gf#Z1)qD;QDfRD^*>kn_uDnj zI&Q-8^2Pz~ur*_Nt1PGMvbAa_cXsoXDdEAz>j~3yADNH#_khm9pIiZ*qvqGPTG}yN zeMSBmIFH{?OkYl^@>7a9?~MUMMR1ZzsiH6m!!%I7q3FGv?pl_3TnlBIr6q|{Q(8;~ zHTaA!7~0-jy}g6SWhes{cuS0$VUa9Exm+E-6QMl59m+aZ2P9fe>ySJ-^^R}Q`t?#C z_l2?_>nBO9nthfWvlbQGx^WMqLVgN(C;tBaVC{uOal-uJP{Np6!2mg2jzug>z0D1M z>0ePw25=O|p$-_plRV|w32K4$>_oN5B3cy1<);m!a(WP;4A3BER1KQkZF@`xr9p*E zC?hnvoA;RfmHs?34PTq~@u7Re6nY?wvH>N2bg<;duEdZ?oB#h$th; z00JXOkI6kqBr<>|Xc`@1fR517h>QV%05qz}06)TyMqnTGS!~f4ONtd*z-c&dl)%z* zRC|9Yt<(($NWG^fMAIV^$^l2_o-0Dhja!~N>!dB)U`mmbkXs9QntwJ8Ef85zg9ukH z?3~=KTB*nNKoA9AbVLut05KSu?5B^BiTifhA*vi82cdqVYrnsD&-9i9{#q}>ON~(T zz6tRk-~QzlcL%|w5rrXtFk?goR_AIrt~pNqfNO!k2|NlzI7yUIU29Q!p8FoytOd3> z_*H-%W2<@n#4BGYB~j<&zD4K}(E`JCo~4gxSx`|}&ciLuvG_JZP;sPE?L{e={{bO~ B*@*xE literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/window.hpp.2E6429FBACC19FAB.idx b/.cache/clangd/index/window.hpp.2E6429FBACC19FAB.idx new file mode 100644 index 0000000000000000000000000000000000000000..da3ca44af638d13d499dc74198804ad3ee1cb7d7 GIT binary patch literal 836 zcmWIYbaS&|W?*nm@vO*AElFfyU|&q{>N(BoI(DwDwyMWPpYgmF z;Xb}-!^4Trr*tl`=xn|n`H=Z#@$U7Xcz>90zPm?1x73zL>w$9XLBk7|PrsHiuw(9e zkQ({WJ5t2J>fy@6-YKnampU`I#hdeH9GNFR^Zf)qi7l^+>H;2CHL|mWyzpB#vnKDq zU1HbrdptK2ADS(ha#sJ`-C1XgD|3@>1ATmZ;`Mc&1+pw+OiauSoU9zId>kAs99#?% z3=F`qU^v3K12H1`ePc5S)1|-(LISf|39eH&9xVS5lCJ zhm(gFCM{(4`gNc56-@yq7NE2!uc#ykHz&6!O!|h+{cu&06%K4nObiShtn943V1j`Y zY&IhY>(y&{(#k(}W(Y9x0QJlA%1UtXa`M7$Pu!{@cUgG-Mm{DkW(E#6Z8jq?0W+SV zC^fBE66gz<9~mXVeuG&H^BYhYf_M<@KL!RK6z60$bc@_S>Yu>~)T_Xz4ATn>1E9Sizr&1r zobhR4T?unNNVOW9CQS80*X|?Dy$mgkTpWxXj6zV07+}&sVNfu^3;~8vP9jK6aZz%y dGKj$rA|QYxmB;R8, ROW> &arr); }; #endif // FRUIT_HPP diff --git a/src/fruit.cpp b/src/fruit.cpp index 8a727f6..d4b4680 100644 --- a/src/fruit.cpp +++ b/src/fruit.cpp @@ -1,8 +1,7 @@ -#include #include #include -// #include "util.h" #include "fruit.hpp" +#include "globals.hpp" Fruit::Fruit() { std::srand(std::time(0)); @@ -10,4 +9,11 @@ Fruit::Fruit() { void Fruit::create_point() { m_point = Point {rand() % 9, rand() % 9}; + m_row = m_point.m_row; + m_col = m_point.m_col; +} + +void Fruit::reset(std::array, ROW> &arr) { + m_point.clear(arr); + create_point(); } diff --git a/src/main.cpp b/src/main.cpp index de996df..8ba43ca 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -16,16 +15,13 @@ Input input; Fruit fruit; int main() { - // int randomNum = random() % 101; - // - // std::cout << randomNum; - // fruit.create_point(); - // std::cout << fruit.m_point.get_point() << std::endl; + int score = 0; std::array, ROW> &board = window.m_board; bool update = true; int row = 0, col = 0; Point previous {row,col}; + fruit.create_point(); std::thread input_thread(&Input::get_input, &input); while(update) { if (input.m_current_key == 's') snake.set_direction(1); @@ -34,9 +30,15 @@ int main() { if (input.m_current_key == 'd') snake.set_direction(4); if (input.m_current_key == 'q') break; + if(fruit.m_row == row && fruit.m_col == col) { + fruit.reset(board); + ++score; + } std::tie(row, col) = previous.get_point(snake.get_direction(), row, col); board[row][col] = '*'; + board[fruit.m_row][fruit.m_col] = '*'; + std::cout << "Score: " << score << std::endl; previous.clear(board); // Clear old point previous = Point {row, col}; // Set new previous window.update_loop(5); // Update loop to clear board, tick and redisplay board diff --git a/src/point.cpp b/src/point.cpp index 16e5714..b8e9a0f 100644 --- a/src/point.cpp +++ b/src/point.cpp @@ -1,4 +1,4 @@ -#include +#include #include "point.hpp" std::string Point::get_point() const { @@ -25,3 +25,8 @@ std::pair Point::get_point(int direction, int row, int col) { } return {row, col}; } + +/* Create save_point to take old_direction, new_direction, row and col + * Once a tail hits the { row, col }, change old_direction to new_direction + * Tail has own point to manage, game has array of points to manage tail and mantain coords with direction + * */ diff --git a/walkup.sh b/walkup.sh deleted file mode 100755 index 3b8d1a4..0000000 --- a/walkup.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# Start from the current directory -DIR="$(pwd)" - -# Walk up until we find a marker or reach root -while [[ ! -f "$DIR/CMakeLists.txt" && \ - ! -f "$DIR/package.json" && \ - ! -d "$DIR/.git" && \ - "$DIR" != "/" ]]; do - DIR="$(dirname "$DIR")" -done - -# Check if root was reached without finding anything -if [[ "$DIR" == "/" ]]; then - echo "❌ Project root not found." - exit 1 -fi - -echo "✅ Project root found at: $DIR" -