From ff942631aadb62fe139679aae0b873d2bc729a65 Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Mon, 12 May 2025 17:15:25 -0400 Subject: [PATCH] changes --- .../index/fruit.cpp.80CA8E09C6743CC5.idx | Bin 1120 -> 1148 bytes .../index/fruit.hpp.B7520D20FB102EAE.idx | Bin 728 -> 728 bytes .../index/main.cpp.C070F90AD8D66EE4.idx | Bin 1394 -> 1620 bytes .../index/point.cpp.5A6C80E33F52E8D8.idx | Bin 1096 -> 1096 bytes .../index/snake.cpp.60A7519252B9A7E3.idx | Bin 726 -> 534 bytes .../index/snake.hpp.8322EDE86440CED8.idx | Bin 484 -> 426 bytes .../index/window.cpp.CFB09F5DADCCC8C6.idx | Bin 1354 -> 1320 bytes CMakeLists.txt | 2 - include/fruit.hpp | 2 +- include/point.hpp | 2 +- include/snake.hpp | 12 ++- src/fruit.cpp | 9 +- src/main.cpp | 95 ++++++++++-------- src/point.cpp | 33 +++--- src/snake.cpp | 12 +-- src/window.cpp | 2 +- 16 files changed, 96 insertions(+), 73 deletions(-) diff --git a/.cache/clangd/index/fruit.cpp.80CA8E09C6743CC5.idx b/.cache/clangd/index/fruit.cpp.80CA8E09C6743CC5.idx index 86dd2d7802fefffc47f792ca6a1f45b202e0cd1e..46270e57e8554279aefca64ff2529bcf6bf94931 100644 GIT binary patch delta 310 zcmaFB@rQ#o$kWZOWFu=SA(dh@KIB1wK@rd(_^UJ_A0(naO>M-79Vc+iC;VqG?|-)8`)%b0Unql7|kdJ_VBmcQ&WzJ3m%(%jyZ&j SS$ty5R#8u<&rg z44C|!DOp*7MSvToZry~ti*3!{?_`t_7vK>Pgb7d1WwwNywPVdE%X{J%&jZckX5mJd X^@=%!i&0#*PuHa&DJy=WtBWGlE diff --git a/.cache/clangd/index/fruit.hpp.B7520D20FB102EAE.idx b/.cache/clangd/index/fruit.hpp.B7520D20FB102EAE.idx index 859faaaff3463d2fcdfb1e202aeea269ea08f944..68c1294ae36c2658367d5e51d6a9dbe07ab81842 100644 GIT binary patch delta 149 zcmcb?dV_VsoQb>l_%^;0xY)Ou|APP%Cldo0u<&s5@G)>eI1ELpX~hPN3=H3*(+^B> z&@f@*Vc`+sk%Vaj^5l6`V7$qD7}Yr7oL9&k38qGVm<*#N*pA5)nQXXcK0RT*>|CD` HBP#;{!&EWz delta 138 zcmcb?dV_Vs9F7Yy_O}CFJG3SzFp5u{v&WU8C^fCvfRTX#Cc!Al!o$hK_wDx7lq2GT z$G%0UADH5xVZy}2!Xv^X2~!2+$@8edc$1ehsv%6ijLczVYMeZi$%I>0$G>0x#v2hv GRt5k=eJ?Zs diff --git a/.cache/clangd/index/main.cpp.C070F90AD8D66EE4.idx b/.cache/clangd/index/main.cpp.C070F90AD8D66EE4.idx index 051f830ea5068b563a1671e9ab1fbe85c1c1752d..d3d1fc739207a87634b5b3ca071fc9673eefafcf 100644 GIT binary patch literal 1620 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 diff --git a/.cache/clangd/index/point.cpp.5A6C80E33F52E8D8.idx b/.cache/clangd/index/point.cpp.5A6C80E33F52E8D8.idx index 6cb2fe406ec4faa0745b899301b619ff51c49541..1384c2fb28499d252f5300259ec2cb76a53c8a68 100644 GIT binary patch delta 88 zcmX@Xae`yROeP_5332JOW|mnGzb`q)BO)yzEj)QOlbZ&=0KYIoSXe?Bt|;;5De=PXfLzm$uWq<`8U6bH*+WzN&4sun?O*0ym^|g0SN8Ebm20s@Te8xO zm&QMI?qD^rTJ~Pdes_{$+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|e+3F#-L_%*@Wr111hy`*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 diff --git a/.cache/clangd/index/window.cpp.CFB09F5DADCCC8C6.idx b/.cache/clangd/index/window.cpp.CFB09F5DADCCC8C6.idx index e7d2b64e67f51afde56a2b7d680b03128787cd05..ed73a2dd38c49472f0899ce063bf6c358973c446 100644 GIT binary patch literal 1320 zcmWIYbaPW+Wngel@vO*AElFfyU|id%XYmrpBN6kZ9Kt;4y2Su%BJl8q;f5U$w(-cRqf7 z^ykiv{2yjT8Yh&TdM#$JoIYbkjloo&$0u2ej;J>Gi&Pz-TJRxYrRlVuuRo1fdl-iG zgr2*ky|FZIeZAK`7Db*3(IIU+KFOBMP<3*OdbEg1BOzwT+?l-WXI+gO9z4Iz!Nbm$ z7sNGhLq(_LvXIr82C5R?Ix?%@S;rMlIKnl#;c4ua(;r&C{4vVCr1ydMbJ6#TigS6H zemN)id_Ops>zvnyZx>JQS~!L0OJw4^$J>@!b$kqVz56@hrnFP=?Q)l_BYSf7tc|54 zue^J8DInp>O|gtQkE-79zh0xqUiylKn)`MA$Fc^Jia>lGz16j$aZ%?5_{?TOddc^1gB zh%xaCFi5a+u=0s>uyAlOZ~*0i;0WWAn*p!iNeD0r1Eslnxh2H8IJrb%(q|sax7U8S zpd`Q~36z%Pl@t``;pE|kNeh|1e%&X1MN@!D2q-PeD=I0@&B-kalfHT_Pg?oM&I|!2 zDWJ40udIYPFDEbDaE7APwBlJz2sbiHfgO0m=6<-U$O;FsE5=<%?JjaM@<>SON?F3( z@^(pm)v|!iTr4~id|Z5dFdy(p2(SroA$UTZLc9o`7^fI7%(XC4CMmFoVb;k=$g{}v z!`uwB4X6m@ZG<8P76lHNBAAIlMIg^36v?s33BVK`+jd=CoO_8Dql|=hFz=VN8tIDGTv*5#n@}JvQ&e+E!A|b>lBmffzI!;1N3TAIn zYEB|3n-mu%7h3~qMv0#r)j#sdZqa5D7Znj>5C=&@fGCUsDdnI%F@$JxZc2^-kju@- S%f!qo$ic_P!pY9X$O8ZrfkXHoE 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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2fdbb24..817e200 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,6 @@ project(snake) set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED ON) -set(CMAKE_VERBOSE_MAKEFILE ON) - include_directories(include) set(SOURCES diff --git a/include/fruit.hpp b/include/fruit.hpp index 26ce878..a893308 100644 --- a/include/fruit.hpp +++ b/include/fruit.hpp @@ -10,6 +10,6 @@ struct Fruit { Point m_point; Fruit(); void create_point(); - void reset(std::array, ROW> &arr); + void reset(std::array, ROW> &arr, int row, int col, int &score); }; #endif // FRUIT_HPP diff --git a/include/point.hpp b/include/point.hpp index 8d41611..8a1d436 100644 --- a/include/point.hpp +++ b/include/point.hpp @@ -10,7 +10,7 @@ struct Point { Point() {} Point(int x, int y) : m_row(x), m_col(y) {} - std::string get_point() const; + std::string to_string() const; void clear(std::array, ROW> &arr) const; std::pair get_point(int direction, int row, int col); }; diff --git a/include/snake.hpp b/include/snake.hpp index b659d20..dc8feda 100644 --- a/include/snake.hpp +++ b/include/snake.hpp @@ -1,11 +1,17 @@ #ifndef SNAKE_HPP #define SNAKE_HPP +#include +#include "point.hpp" + struct Snake { Snake(int default_direction); - int get_direction() const; - void set_direction(int x); - int direction; // 1: Down, 2: Up, 3: Left, 4: Right + void create_tail(int row, int col); + void update_tails_count(); + + std::vector m_tails; + int m_direction; // 1: Down, 2: Up, 3: Left, 4: Right + int m_tails_count; }; #endif diff --git a/src/fruit.cpp b/src/fruit.cpp index d4b4680..d7b90f0 100644 --- a/src/fruit.cpp +++ b/src/fruit.cpp @@ -13,7 +13,10 @@ void Fruit::create_point() { m_col = m_point.m_col; } -void Fruit::reset(std::array, ROW> &arr) { - m_point.clear(arr); - create_point(); +void Fruit::reset(std::array, ROW> &arr, int row, int col, int &score) { + if(m_row == row && m_col == col) { + m_point.clear(arr); + create_point(); + score++; + } } diff --git a/src/main.cpp b/src/main.cpp index 8ba43ca..a74fb9f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,51 +9,66 @@ #include "globals.hpp" #include "input.hpp" -Snake snake {1}; -Window window; -Input input; -Fruit fruit; - int main() { - int score = 0; - std::array, ROW> &board = window.m_board; - bool update = true; - int row = 0, col = 0; + Snake snake {1}; + Window window; + Input input; + Fruit fruit; - 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); - if (input.m_current_key == 'w') snake.set_direction(2); - if (input.m_current_key == 'a') snake.set_direction(3); - 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; + int x = 5; + int y = 5; + for(int i = 0; i <= x; i++) { + for(int a = 0; a <= y; a++) { + snake.create_tail(i, a); } - 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 } - input_thread.join(); - /* First - * Learn how to make threads, - * for the input thread call the thread then use a while loop within the thread, DO NOT use a while loop to call the thread - * - * for the update display thread use a while loop within the thread, DO NOT USE a while loop to call the thread. - * - * the update display thread will ALSO BE YOUR GAME UPDATE THREAD. Your input thread should only be used for INPUT no other function calls should be made and it should NEVER be put to sleep. - * - */ + for(int i = 0; i < snake.m_tails.size(); i++) { + std::cout << &snake.m_tails.at(i) << std::endl; + } + std::cout << snake.m_tails.size() << std::endl; + + + // int score = 0; + // int row = 0, col = 0; + // int fps = 5; + // bool running = true; + // + // Point previous {row,col}; // Creating initial snake head position + // fruit.create_point(); // Creating initial fruit object + // std::array, ROW> &board = window.m_board; + // std::thread input_thread(&Input::get_input, &input); + // while(running) { + // switch (input.m_current_key) { + // case 's': + // snake.m_direction = 1; + // break; + // case 'w': + // snake.m_direction = 2; + // break; + // case 'a': + // snake.m_direction = 3; + // break; + // case 'd': + // snake.m_direction = 4; + // break; + // case 'q': + // running = false; + // break; + // } + // + // fruit.reset(board, row, col, score); + // std::tie(row, col) = previous.get_point(snake.m_direction, row, col); + // + // board[row][col] = '*'; + // board[fruit.m_row][fruit.m_col] = '*'; + // std::cout << "Score: " << score << std::endl; + // previous.clear(board); // Clear old previous point + // previous = Point {row, col}; // Set new previous point + // window.update_loop(fps); // Update loop to clear board, tick and redisplay board + // } + // + // input_thread.join(); return 0; } diff --git a/src/point.cpp b/src/point.cpp index b8e9a0f..dc3113b 100644 --- a/src/point.cpp +++ b/src/point.cpp @@ -1,7 +1,7 @@ #include #include "point.hpp" -std::string Point::get_point() const { +std::string Point::to_string() const { return "(" + std::to_string(m_row) + ", " + std::to_string(m_col) + ")"; } @@ -10,20 +10,25 @@ void Point::clear(std::array, ROW> &arr) const { } std::pair Point::get_point(int direction, int row, int col) { - if (direction == 1) { - row++; - if (row >= ROW) row = 0; - } else if (direction == 2) { - row--; - if (row < 0) row = ROW - 1; - } else if (direction == 3) { - col--; - if (col < 0) col = COL - 1; - } else if (direction == 4) { - col++; - if (col >= COL) col = 0; + switch (direction) { + case 1: + row ++; + if (row >= ROW) row = 0; + break; + case 2: + row--; + if (row < 0) row = ROW - 1; + break; + case 3: + col--; + if (col < 0) col = COL - 1; + break; + case 4: + col++; + if (col >= COL) col = 0; + break; } - return {row, col}; + return {row,col}; } /* Create save_point to take old_direction, new_direction, row and col diff --git a/src/snake.cpp b/src/snake.cpp index 550693e..4fc7ebc 100644 --- a/src/snake.cpp +++ b/src/snake.cpp @@ -1,16 +1,12 @@ #include "snake.hpp" -#include Snake::Snake(int default_direction) { - direction = default_direction; + m_direction = default_direction; + m_tails_count = 0; } -int Snake::get_direction() const { - return direction; -} - -void Snake::set_direction(int x) { - direction = x; +void Snake::create_tail(int row, int col) { + m_tails.push_back(Point {row, col}); } /* snake head for instance is (3, 0) diff --git a/src/window.cpp b/src/window.cpp index d960468..590d668 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -29,6 +29,6 @@ void Window::tick(double frames_per_second) { void Window::update_loop(int fps) { clear_window(); - tick(fps); draw_window(); + tick(fps); }