From b3ec7c29688487d70771611a9cab225c058c487f Mon Sep 17 00:00:00 2001 From: Polaris66 <64375061+Polaris66@users.noreply.github.com> Date: Thu, 27 Jul 2023 02:47:42 +0530 Subject: [PATCH] feat: :sparkles: Made the main Logic Main Logic Works, Have to add customizability, UI etc. --- Cell.cpp | 50 +++++++++++++++++++++++++++++----- Cell.o | Bin 43776 -> 44136 bytes Grid.cpp | 45 +++++++++++++++++++++++++++--- Grid.o | Bin 45304 -> 46080 bytes {headers => Headers}/Cell.hpp | 7 +++-- {headers => Headers}/Grid.hpp | 4 ++- main.cpp | 12 ++++++-- main.o | Bin 12944 -> 13448 bytes sfml-app | Bin 44112 -> 44360 bytes 9 files changed, 102 insertions(+), 16 deletions(-) rename {headers => Headers}/Cell.hpp (63%) rename {headers => Headers}/Grid.hpp (85%) diff --git a/Cell.cpp b/Cell.cpp index d361519..ac27455 100644 --- a/Cell.cpp +++ b/Cell.cpp @@ -1,15 +1,51 @@ -#include "headers/Cell.hpp" #include +#include "Headers/Grid.hpp" +#include "Headers/Cell.hpp" + Cell::Cell() { } -Cell::Cell(int i, int j, float x) +Cell::Cell(int i, int j, float size) +{ + x = i; + y = j; + alive = rand() % 2; + shape = sf::RectangleShape(sf::Vector2f(size, size)); + shape.setPosition(i * size, j * size); +} + +void Cell::render() { - shape = sf::RectangleShape(sf::Vector2f(x, x)); - shape.setPosition(i * x, j * x); - shape.setFillColor(sf::Color::White); - shape.setOutlineThickness(1.0f); - shape.setOutlineColor(sf::Color(255, 0, 0)); + if (alive) + { + shape.setFillColor(sf::Color::White); + } + else + { + shape.setFillColor(sf::Color::Black); + } +} + +void Cell::setNeighbors(int _neighbors) +{ + neighbors = _neighbors; +} + +void Cell::update() +{ + + if (neighbors > 3 && alive) + { + alive = false; + } + else if (neighbors == 3 and !alive) + { + alive = true; + } + else if (neighbors < 2 && alive) + { + alive = false; + } } \ No newline at end of file diff --git a/Cell.o b/Cell.o index e83b5d7ae084c377af74ca924b7d674abc320d46..7efb523ff5e2087b10698b06ac570ca3e25814cf 100644 GIT binary patch delta 6472 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 I_U_C2Up4JK{Qv*} diff --git a/Grid.cpp b/Grid.cpp index 8d5e4a9..c820d2e 100644 --- a/Grid.cpp +++ b/Grid.cpp @@ -1,8 +1,10 @@ -#include -#include "headers/Cell.hpp" -#include "headers/Grid.hpp" #include + #include +#include + +#include "Headers/Grid.hpp" +#include "Headers/Cell.hpp" Grid::Grid(int _size, int _x, int _y) { @@ -22,11 +24,44 @@ Grid::Grid(int _size, int _x, int _y) Cell *Grid::getCell(int xpos, int ypos) { + if (xpos > x || ypos > y || xpos < 0 || ypos < 0) + { + return nullptr; + } return cells + (y * xpos + ypos); } +void Grid::setNeighbors(int xpos, int ypos) +{ + int neighbors = 0; + for (int i = xpos - 1; i <= xpos + 1; i++) + { + for (int j = ypos - 1; j <= ypos + 1; j++) + { + if (!(xpos == i && ypos == j)) + { + Cell *cell = getCell(i, j); + if (cell) + { + neighbors += cell->alive; + } + } + } + } + + getCell(xpos, ypos)->setNeighbors(neighbors); +} + void Grid::update() { + for (int i = 0; i < x; i++) + { + for (int j = 0; j < y; j++) + { + setNeighbors(i, j); + getCell(i, j)->update(); + } + } } void Grid::render(sf::RenderWindow &window) @@ -35,7 +70,9 @@ void Grid::render(sf::RenderWindow &window) { for (int j = 0; j < y; j++) { - window.draw(cells[i * y + j].shape); + Cell *cell = getCell(i, j); + cell->render(); + window.draw(cell->shape); } } } \ No newline at end of file diff --git a/Grid.o b/Grid.o index dd1ecbfc4b7d61e186da3a93a970a7fabcbb4bd0..58126c140806c570a2bb100a5af3df5a8b48f14c 100644 GIT binary patch delta 7391 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

BV40OdfDKma z-m4_ekmnpU!#LVYj%N8jg;o&4=w+ zb>`cA*ex}}=`f!)2-mA_>79|3_o^!X7u`65Wq8#teoL{48ici;8cxCKh+A4cit>)A zVsAJNh~OydKB7uTMv?8PDhb7u2e2pQT4!s6w`5s#wnn-!ZpT1rHFd zVUJ@tp)Jv5Kc0p66c*z8}cPA6MBonvh&4+>&Cayc4R}&xvLbS$66M z5lst!2ajgAR1S}3Z0!mP0p5TN_-8xWT2$#XXe}!K@xq*&TilY(LEYff9b`MHN^4h8 z9$<%qLV!ci0F5iic1o3oJxF$aY4Rx>i!&8I`))qN(vrmL!x=H`wF^ zvi(+-<|R-bpfG_#fDCAWHfU`)StXPQn4CxBEvs!@YEJoS!~i g7#Hp($I-I$(}pE$e`WO3L5SY+u$VQHKHih`|Fh6FmH+?% delta 6529 zcmZvg4^&jwoyX@rKtN|45ai8_$naOuLZTk4V9Y>T$r)TRBr1P~Kcb@IDW=*c(X>W0~<}#9Ci=J{oXh4y}UNP z$GM+-zu({e-TUtQi>){1@f&h)w!HJlXXbh$T8>K=i`ReN`_l%6yjzCE>b%k$S{|?eZLj~6aFTFlJ!gA(kbd}uk@>1% z@2BqXUP?HNl(tClKj6u7GK;pCi*MhRmBTHpaN(&OV@YbK=6y&FF8Zuuab z^IdNbLwcr*vEHw@wY_M9hgfuzdzoJ}(ez?_(RjFT$uAmjLT~Ro`cjY?vkTkfk|NrN zV$d5mec;2G{D@fltGsB6#yjJ%c(PluzuH?T_FgDP>z#`Oo2|Rz5jQ7t;LkJ5C40G8 zL($Z@J@R*LljN0n$i2?F#H?+%MvKchnZI7lNp+{4W>Qi1iOLw+p@xa5DFH7=YSP_OCYo6uS8hx(N@@&XA7ae;G6s%R@?$uZLloj8IC7l!_;_-O~#vi~Y7(G^pp8%cJwy z-#Mv_>KwR{{YkXk8iCj6Jt%)1F(A)>RFcXEwl9d5^3_X*LH9&hEYmFiWcj0ZM(xx@ zDb)1OHC?@UsBc94LPcs9_52HrNw?Ih@uJelCPWH-?KkvFY+tAp2UT~y;ZD<9Ayuz8 zbVX}@sp=aIeU8>j#npw1vo=c1wZ(7~wAOw|-&TrWQ{C?wu6n()_a{|<)X+<{R@@|! zts_!&(J=s5GQu~OVWMT`|Mv~ba{ zfe%&vpe|eVQL$DL|BRvQ$6kP=%+{p3-#o^5RXt#g(sww*Cb9($UC*{1Ql8TCqUwJ0 zxW-le=f)`gcq^ugY=^(0zozO(4Sl}W`drn2Y3Qr8)*9YE>6Yj5)4cfNx77AABSzn! zQC0tyq3by_;>6e!hMuIg9>VQBCF)ta>e-ZzAuV5V{y~j?$%y{3*4l)J>AoBWDPRQC0v%PHuE!A2HSjTL+qIPhb-ic=7G2>jS2Ev7@?vKCCZNCpIU#qz#zM;33n1f75iapbO|( z^RIkkR+eS(<=R}PI3G7fE@xX55%~m8mMOL!Z0Qr%V|$r`n`KtplP2|D9Hr_gw>qCN zsWB2eEF#km++VI>X}Q(rHmOb6TCO;o>FfEIo7|^xxLmQdnB4DU9kYyZ9`l+GnZ~r? z4l{~JyPh#ayHvy~nvh%Zx5rbAwh9Fe6;@}vY0PHRn5WQFp*YQ}*llum<2+sQFxTfh zV{)4?#_ZJJH4TRGi{9qmNl&Iy-w&QmIItILX?NX4X&RJzoX}E3It3Re7&d zJRtRv`ehs5;}V{&Zj-wa+bb1#eOC1IjJ44bMa1sIR-Yp6M~ClTsaMQ`rHmT!WulRc zsj{lfUTc*gR-(G4Rhc&NBGBhf!v&wB#$M(a#$tjT=GdGntIaE>VhOKotV)r1Zfe9$ zJhNKCxvET5R9lhEA1OVn&a#572k-#>!D_4X2uJI4trMwOM7EKtD>N+v6 z?HFBsL>{CX1;=Zw{9EOGm4e0^9v^!z;63Vx*o&#P@@uzejl$V;YZY7$Yp~YwXqa`P z#%eR~?`ibZDz-DGIg0Tx#|_u=IJi>{Xk(9AZLgSOmf$w$6T5Sc&ck#>5y$asl&n=S zTAPVZx?=y2tj%0ow*%gH(TKQeC)zgW{ZF zWaD36+I=K~lChOz4slGiNln3Fs+TudogF5X?_Eo(mghO#-k{jtG`VTG!+Fv*Um!-D z5Ed~{26F3pkJnqBUXz-o`r)b(ZS{(?+vLtRxqUcOuf(4=x!JVj}GwRYg@M#Yw= zz2-#zg}BBs)=gI1PLsL_woN=IR0mCJ9`2{wNOjz#F2Po+hp6W96I&FKcPS22y)5#Y zR1e;xIwA6!)I!{$nzNaCP3m`$yP11Wbtyl#MG<+Ip@wQV)h3hrAbO~tqk7JydU2lW z=w_>P!ldf&K#?&O@ePWtke}e9i2N%svw{2FV0E^d)Rn3quAakoj(OAMmZG^q$O!Fb`5jqC@=oDTYAzwr0aCo9NC z>VZA0F-ki2GHwrb!M)V?u9gmBY;OTyO1Yf{XcSs!qSS|z?2WSL@H4WLBgjTFK#r0l zLif{unmSoQj*=#^R{{Fj3v@A>93e-A+s&vhjwTz)favd|PmZ$h z=wZK`KG{eHdJ?4zbtb17f8Rx*8N-o$Ba;W z6=R~epCfx2Ne0M9a-_FY`V2>Z;zsKM$K>m!>NQ{)mhg)Mi{$S{^RLJx+&Yjgny!N$ z0UuErjUZ7QjSzAC5xC%ychMsP^oZdYgoq(}&v@jNSonxrk03}i@V`Zf(p7Nvd1Cvu zE3O>t`WDL#s}St-$dOYJBD_=J`iVy_p8_ATX$pcw>nenZ52nKPQ;+-~Q{f}NoQfbZ z)s7I+PzG1PBj?%SBU;N4B(~EdcH80lnMXcHkNColAQ31-h$xJME6Bx{!AJDQAxMnV zBNoKN_0Jx8upB<3E*?SRN;yJAKfOa9*-`-?F+q>;Rv<*ImaB z=pE(BNraDRNkou1K#ypp_Y01rM~rhEF=skL#C_A@`lUyX^T9`)n2sRP=|hP4J-z2V z@)3GOauR~XAU$Gv5?s%7C+HC^^oWB=2oX1Za2@l=14-}^mMR2^kLVGOD!6{-k)ss& zhkK!m7Cxet9^t4(i0Gtu)+4`~tlpU0&SuMl^v`-?N0P&L?s42WyEt}UZMYYQw1LHw fTW5!RL({N+U{P%0l5qEDI6AOcF5HCBz^wlV%4_~V diff --git a/headers/Cell.hpp b/Headers/Cell.hpp similarity index 63% rename from headers/Cell.hpp rename to Headers/Cell.hpp index a918727..33705c2 100644 --- a/headers/Cell.hpp +++ b/Headers/Cell.hpp @@ -1,16 +1,19 @@ #pragma once -#include class Cell { private: - bool nextAliveState; + int x, y; + int neighbors; public: sf::RectangleShape shape; bool alive; + void render(); void update(); + void setNeighbors(int _neighbors); + Cell(); Cell(int i, int j, float size); }; diff --git a/headers/Grid.hpp b/Headers/Grid.hpp similarity index 85% rename from headers/Grid.hpp rename to Headers/Grid.hpp index e79c861..1a33911 100644 --- a/headers/Grid.hpp +++ b/Headers/Grid.hpp @@ -1,17 +1,19 @@ #pragma once + #include "Cell.hpp" class Grid { private: int x, y; + int size; Cell *cells = nullptr; public: - int size; Grid(int _size, int _x, int _y); void update(); void render(sf::RenderWindow &window); Cell *getCell(int xpos, int ypos); + void setNeighbors(int xpos, int ypos); }; diff --git a/main.cpp b/main.cpp index b8f64f9..29c1055 100644 --- a/main.cpp +++ b/main.cpp @@ -1,5 +1,7 @@ -#include "headers/Grid.hpp" #include +#include + +#include "Headers/Grid.hpp" int main() { @@ -14,8 +16,9 @@ int main() sf::RenderWindow window(sf::VideoMode(width, height), "Game of Life"); Grid grid(size, x, y); + sf::Clock clock; // Main Loop - while (window.isOpen()) + while (1 == window.isOpen()) { sf::Event event; while (window.pollEvent(event)) @@ -29,6 +32,11 @@ int main() window.clear(sf::Color::Black); + if (clock.getElapsedTime().asSeconds() > 0.01f) + { + grid.update(); + clock.restart(); + } grid.render(window); // Display Stuff diff --git a/main.o b/main.o index f622538f5f84c0372baf488e738f8f845e8c7f2e..e750700480708efe69685e54560b14c507f3274a 100644 GIT binary patch delta 1871 zcmZ`)ZA@EL7(VB=m%^m9e7H-YY;3krN=GSF%I3J&Ng8N?F?EY*KvzdAtphe%aWPJ2 zW(|Za>GrC_MF07<#;-|ch8YHa7)bU*iA%)nhx=uqi3*9yh=JgHZZFL->Ph-O&-*;@ z``&X;Z*P;K@kr7kjN2|df2B8}kd`Q&Tie@}Izko_$B^|1j2%bjAcRaNnEUSiStd** zdN59^Wm%~g`f1p}Iwx;*!V--(_A>sqT6%-EwO>jk8B8p!;6#GyNiJQzgBtV-C%XS3 zw@)MnGQBEjy`&r00L%F!2-%wf@*&I@ zNS3eu$NdY|(e;X~cfZy_NQ=hK!9J5@c~5mKv+mC1Yw);93jCqE)mirmjWy=5nYOHM z(%4g~UX#@y)YueU$7%Oew=U}zY0PP0(_C4-L1TTY?#}9aG&TW+X2~+6x{d#Ge}p4u ziQb)l+N{&hCnr~5cP!0FALKE&w%;7+nOj8hXDZ-i+QkZPQDkeoa;5;A;%@q(u@a8}Y;aCNv5yI%z;rtwk zA`DbOs!pcwz-pZ$T&Mu2Tc)=m;#PzybTCk5n;{vREe0c+fnQQ|*4L)IcFGL%v{swK8Bo6=p delta 1540 zcmZ`&U1(cn82-NRoTND;X%n0Eg@g9S4ncHx?#iaf(0Qdy?M0=&-}y5)zL59ldEWPV zznqV+I#-*n#aS)7lzdEYgNJ(6Q~&JmhXq2mDkaQHjAy4YixWZ?E1bRl_k9jrt(-x> zsI^(p6im^X7CyPSehMDavymyDf26gp^RcmOl^PFMw|+rI^4q)cI(r#HLP5N|abXcA zg<9*$^89r8jhXO^b2HO~fJ0n<=2MaULBe@FA* zYW@-TP;K+&p5RA`YNC7}A&2xp^0+@r!bbHUuEI*2JpQ4^c3Eu7$Tl@RYT?I?%x2?i z-4@-Y_KeIn;c*2@GXk>@&d{@%K&C|@oCaQgL&sezm-#S{jTF$}?Mm7o&k8C@GtQ#6qJDsghcmx5ay>Hcz9_$hE0^t?^BmX?r z`|-PwUi|It>vjbu0`m9`gT-#bSDWl-O;gz>e4`2HM>6}rhdY5x?yn|xpou-i<SbQnBA+0S1DH{R1c`zmK$vrX&~aD_7TS@g317NHr+)}>v)7L~H{Lr8-=We7W+ofs6q?R{f*LnMPS^7~sG%pIw^MeFB4W;@U=#a% zxM!>hHLsH^jccb#cRF2$5aFMzSij%-j)NY9LeG0th4mhl4#A)3hoKNt=?GkisqnNX z4cjpt``aTNw)X}B5p!rK_PF|J_@C&uta&LxV{uB@+#!{>=2y$FqjiawH5 zrHlCDxOw1rsT~#)PN*h*tSZ22QejU8*ufAEKs2S$b||M*ItVK%l??`92cZ%~(kgo? z0F!BjUWP_81`pCcb_v@O+vX(WxD}b#bN;( zSS;Hhno-zL5GFHqu$Y4e7MJW0%`5C4uE{G>6(1b8K7CETo87hJOX^rYAi^G2_prNP qVL#eo62lKD)UQahl0M{sU;B&FIk#R_ATdxpu-&OwUy5)x(e*FBFPlsN diff --git a/sfml-app b/sfml-app index 4050905243a85cf6d3806d8d2b56083773373e4e..bd4b9b3fd42f36b771a675ac78231f351c08be68 100755 GIT binary patch delta 11997 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 OK3ndy%PM;JRrWJLR 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