From af579fb8501191c840dd765acef9f15fa3af67e8 Mon Sep 17 00:00:00 2001 From: Noah Swerhun Date: Sat, 18 Sep 2021 20:03:46 -0500 Subject: [PATCH] snake can eat, display score --- config.h | 4 ++-- nsnake | Bin 18160 -> 22528 bytes obj/apple.o | Bin 2112 -> 2112 bytes obj/field.o | Bin 3048 -> 3616 bytes obj/main.o | Bin 5168 -> 5448 bytes obj/snake.o | Bin 3800 -> 4616 bytes src/apple.c | 2 +- src/field.c | 19 +++++++++++++++++++ src/include/apple.h | 2 +- src/include/field.h | 2 ++ src/include/snake.h | 3 ++- src/main.c | 6 +++++- src/snake.c | 24 +++++++++++++++++++++++- 13 files changed, 55 insertions(+), 7 deletions(-) diff --git a/config.h b/config.h index 67d677a..fc3d8c9 100644 --- a/config.h +++ b/config.h @@ -9,10 +9,10 @@ #define quit_key 'q' // Starting legnth of the snake -static const size_t starting_len = 15; +static const size_t starting_len = 3; // Number of apples on the field -static const size_t n_apples = 10; +static const size_t n_apples = 5; // Speed of snake (milliseconds between moves) static const int screen_speed = 150; diff --git a/nsnake b/nsnake index 6db3c59b30eb1e8ad2cee369721a1427e215a651..3133435c65933121234a399336d51d22f3f50ee4 100755 GIT binary patch literal 22528 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≫`caGIQ zcVDJXnT#ru`(`_)ZWvqb`SjFlsJmr`VzAqwMg}#yVDESCy{Gf~ z(a)N)wzg`wa;v(}J>U7c=l;BVZ@>3$f6rgD(&=yrP6cAQAg*t!LcChgc8$(}c*PPi z1>YBlZ;0{W$4N}dy^27p(qU&VEz)=aDA~=VOddL0!GbAANR;gCk}*k1n2KV>lU*TY zHE*SlPEmSHS)MJ=qvXOuN2F6Bn40aVZ4Q?yyTi+JsnGRaqAA-^bCF$2+oiM}(_sn- zi7B@ywF!OLpOtzcqvVy}LRjrObsSb&rS+Lo8I*4PeIoRA%B$6O>*p#zR{E5J1ye5X zPhdyw^2a9b<~6!JyM8FqG)8yll>!4PHJhXTkzRmx9@tt^X+#F zr`>Sya?+uCkPYcjB8)zqD15p`NJq903Km_$N!T~=dFzti zdu{L$8$4oz|Dz2)V1r)@+=Gubtp<><9d_E_-?PDg3w$m<*7PKReEwGgpDNB1gI;C9 z^V3Tj7rtCv1gh7r4urz7aAPE%2*=j0UeVkd4X+JuYz~V+ps}Sj8i*%?u|y!CRP!pv z6QOv0OmwugZVHQzU?^1IBqGsBg1|e&o7;jR5p50EH?@lTjj?d>PH>@cb8xe$Z;!Gr#6?GAI00ATXs9C+72(cELd0XiXhu!m*fW=!iuU6nTATFwhW*2Ad;y5sPW4URR_g2w$5T+G3GtqCudzuz)m5 zp@icdG&LalduxP9D_j7vmKgAMi@E>^j8!VZG0wxy&5%pb6(Wl{}67ZOCUfM}eV#3YycZCV3GB_>q zsvP;3^STyzO*qLo8D5nmjN6)!S}%PILHJoRr@n6XDoXfdm6hLjcojpq-V#Zm$%MO< ziu`Uf;cgS&X~Jm@ z#Snh3%F6FOUd0eTQ)T7%(_Y08exAz8?|!dh2tQwC$G*o}V5|kkTHya=3;e--!52pN z@gk$A@U6>)Ft+t4oS6Zmdwd{lwE!m-b5jhs4v?AYCE(9}rJVUfLu1yNIWyE?q4781b~krG@0b zL%f^#;V%Kq-$*&AX48sErU+MXG#S<)9mvZ zTq=ksW%Se?Hj=ft@cgNsy4RDnR0HG&lC|gnl6#Acy@Lf5_qo#LixQTBKuY~9o8*0r zD{Tqm4a%~6XFIBr z$CAHI-7b5g!07f5I%F6W-Btd<*e=O+@Aus1Tfc!Do!TUYFh*n;bCrSYA?ejIK;ffa zH;<&ocHtsMCg7VB^JI$(l<$3`d|5?+R?|MeE;|$tc>KZN-%7VpaA0ko2GG@t?|Gfu0xOU!+P<6r!98k~&UK zdkXysMb!d=L%?J_sfU&HVzcxt3RL>pjT~$zQZ+F7%|`xoDf;&p-f=s-`yI&__r5>J zG4Se0^2MRTXUPHz{{aP3o`w8?QXVgr_wG&4aU6PeWT;S1HqW@BpFChBf1L``tdR5% z!{T9WJr();xv1V+2mGUvDVV!W8f_;3a7!A`P+Kdve@C5w$?l;4D8+WrpCXce17Gm7 zi2R@}YE%o%*X%dUf`p|`73lbNAMRmo{46x3`G_bUk4^8YFn$R~iu5ZZE z*Hd>C5e%zqXA`vzI11H`WeSnsg<(zXiO({bryqnd^2cP@g#j&U1e-+UTaF9&HaD6D zZrRJP5e?VyAv95H0hDEzj1D8cX3(OX8bUGDjH6S!4;K*vkT$8MXe4r%XU#b1Eut1+K(wvHPfVsaTqzM%1*A7=p{Wwrm((nmvEyDslH$uM$DTINBA`X|nz3=;}MmT%oHm zMbN-@Z#{&;B6B-FQaPu4>kl}$;~kX~iAm6LB$lRM27t~%wLwIWcU*5Rbtv;iqj|N& z9Kn*Ee&9?az0^r3XBa&JqanSrNewwJxD3&2n5`oP7ZlEg4!HBXcO0||s*&(@}5(rsER^}K6u1a{1F0nIK^#`--r`j`_ z2Jhq8nq;q(AJf#pTZgZ)%1^ooGmKo-zI&2a`FZFEwaR~hteUA-{2^bIa+M$5p*Hl< z{?vCZG1`b!Mp zSQ=}A|KS#J=)3H}wzlSQdHqsPG~5x8OiAfd&&9!uJ(0L4+TPskX=}xEhj2`npVgO{ zKrD=B8No!@)`+%GlxV+0i8ccB76{Q02{(thT**im4R+<)>6b0fA8P(`8-j^o^HL9D zD8*7*iO(c_PGMb~rFp{mvlIDvxUnT1O>m@|m9f_6i`AsBvjKX@WNVN=P9fsa;GNli zk&JW^&sQd@W2;}bJet=e>tAL94Xv?`U@T-`hDBdKjIz^qoL_MD9>hd9H}-#!$iF4am}o&7hG}CT%gi+J?MF;e=Pw%SMhe|iYeor*P#R@zZ-Bh9YP;-B-{(u3(Y_YO?_k;&Ut7xDGU{}j?XSHkQpBMODp5AeOSIK>aRj!Kd;|fw2}CYk{#A`2X7i{QeccZ$;Y>O5=5g zdAU~vj)zDp$zAQ}yFWYiOHcd`48P|k_g1jL)>Woin)3Tzv*%yADZvCwMScZBeBLDmOisfv4)k}uJQxP2^nZf9(lC4Wp8gxmO%&&I9G`QIk| zUb(g0#d;j9)O4Mu4VrG!bi1YxYWkR_|Dx#uP2be?n5LgYrG zX@jPlG~KQ#$3Ngzxm7DxEcKM&t?5$F!iD7v%PUyHhEhL`6CY=+V!AFIknGYO<ZZ|&NFm#A%;^choz(n%J{|#Bt*=LNm za_MJ=u+A&r()zr9u={HzK2`8J5XLu1KbWPxj3_!D*P)YED?NX(G!Fe~80URdK_p&Z zx;6ecdI6C4H6Y(1ajBZ~wHvr62T{yjSVugV{SSF_h0ode*=K{lEOD2Zrx#RSN8bWo z4F88M{# zmv~7p`11Y+G-hdhxvrPIw*vfP8$Vas;Piq@zH%el|4A)ep`+>qPVHvxmu*`AS9-(H zp!I(Q+@temvK#nR=S(r+HKRg2q5Zt2%jN!hR^!*}aV77k!So>cp~2}Ay`AvztL{x9o9@Bm< zx6v=fI4Q=uQ|!}P2iLYm_Q=fD9_FS zsE;M$iFUl{S1(3S=mZiifqFWl6Nf>lHPG1Hx-r-s2qju^lqT5TDe7BW@C+&u4q>yF zSA)*QL;}HBEVwyYIdm#)S+W!9k_64|n)+3kqMk#<$uZ@Lyj=2aa-! z4~an4E!X>2SFgyG$PfTwmm2UJ+JjNGMg&&X+)(MO3EZ%9<&FNefwjKM8b5iJhk@$j z?Xn?MO#<=>j64nGH6Qu;s^d}mpp!n*gab`zbR1@q54c1i9Kypfk$ns(bMmR%=piS4 zG>T73mmNQ?0P`owJgfmw- z52mXqT`{Ao6sW!dzCw{`pgoQrr{h^UrAO%0R%;6z$(ouwf|`JiaM6J=b)YN9T(ykq zB0f462yBew>=+F{Ii6(S1>$^IOdlQ7=gLBnaQ4Voj%Vs06^%ZiMu*IDG}MW*94HW2 zyLttWQ93`D_fVWV4W|yWWzV_g9!$&es!p)wK%zXpxg`N!s(ezSI>PZxLX|G(iO$1^Zb7j95^c}a z3z<3b?-IrqBV)Gj)b>m-Vnt1P|HE*##h!mxGxe~drdIo#fa9@QE630GlbDuhJHDS} zjXwxE-AiJ7zTd=jKntjj)Xr?r_njiZsLE{5_pg}p{VJ%)L_W;vyI|`3#-^#Qwdm~gi zVS9G@gvFkJmoc5fike!-?>}pMZhzs?ikhy^3KY)mueHQ4k)ist8vkx)`V=c_YAydI zi+wRo2uMs*>{!9s{?n{@4H*|c`m)d7KjQyau*S=+jE>&`z#M*^2PBFdX?m`w%3H!g(sU+nJKz_s~+21e=Aa~l+4sJ zM5KIJJ2WOrR=x{TiY(Wg=T8!I>`GI8FIlSS1(pHJ<+AQnWb)asTdp+Du^3ob@!!}A BKSuxn diff --git a/obj/apple.o b/obj/apple.o index 62ef403ae012e33b2fb73d5c8faaa01595ccf98e..72d4f8d9b8c53cc2a39b7d13b3f4aee8d9c7bad5 100644 GIT binary patch delta 27 hcmX>ga6n)~8Z$?3epxC55Nyt4E@EK}p8SwK9sqcL2tfb< delta 27 icmX>ga6n)~8Z$>xYEFJ~VoB=eJmw-6#_-7x+2a9??g`xh diff --git a/obj/field.o b/obj/field.o index a7bf743bf87c697b9f42dab9b543ddb87aad97fe..525dc2dd14aeecdc0c94c227a3e991ba36211dfa 100644 GIT binary patch delta 704 zcmaDMzCdPz2Gatrjas}+^`Rb}Pdz$oUv!o}=?s0~(dm1`yuJ_>~an)maY#^XQKKaq=*T%fP@4p%_>cWE)SQ&~ipu!R;`qdZf}B(ah)7XtPJVJ? zNh(wjEES)dUzWPrmMxpnb_3Kv7NB9gK>X)F1f0Mj{u)VKV)9(}V67IQE)W1ofH2JI zOF)7^028lZn*56W9@8(T$)`BXI2nN90s=cvjCldb zv|yV2i`$NAEz@Kx9y_K3P&GUnAm%O}JI)VG5HlJkGxC~qu3(4oJSIB=c?HZ6p1|Zr XAg_TH!rL?XAdvR~swgG^K>3L4q4msE0;9hz%x@Vr@+tY(1$5 zgG*3~PsHk_UPKRqC5ZK4=|!U#WiLf<4R}cL(0YrYjWe?wSpq(o@4ffEZ@!uRd8K~T z7F70*ysXJA;vmANf*lOQ7$0=wOC1-CZX_Dj#CK9w6O`E;K=7IkK#eU;j5qXhVp})X zb)!m$C{fqT#DURouN6hRmfno=kA8Hl>@=Ir@_5}a^}F3fvr53Iu8?G%M%^qc?A(A= zR)L#bh<&#M&p7QM5i$&CC5E1Z>xXy+wOqQGo*D@-vlnLy*^xkh2J&7Fdibie$YMcU z^p@CTo=)yTWsCoX&|+n?^9({f#9ay!DJm3$6c156LNP)yNikJ1T^=+vJDt9qy^xzJ z%%uw%#_F=^B6H>1)xzX-an7b_!{jEjQyKUp45KG-%dJ$#+`GBtOL8e3B#{RSkp{=x z|M1=RQ}bA}53k?&U6N2?*`uH#s9}r}>`&Rsmh&EBi{p~RAq1yH1$xCUbOYj|f=XoP z;5~<;5ASH5@z}u+IQXaZ)EAH!m2>YMn*9!q>EJa7zwY1^mN(k z!(@b`HT?#%q$EF+7RRua{!O=SKGMeb+HRw5d;s#2G8nR_dfQaB`IBw@M#YehBUA&^ z8y3F0t?35Ha+vMo;U~8XCS9H-82j7{C;U~0d>6bd#m#WbxDAv8fkORXWPm(q(p)|Iwclp3QT1)(TX z$VCg^QH18|$+CD5#G9tKiqMO0z|KMXLuxn0E7pG6 z=FCKa-??Haic42X&x!~$j6{-K^*ZNUTonDckn|^a`O~z zHLaVXnq=U*b`dY_No;8iv&0F_g{&PuKYUKT=`9BSFjn#w&Mz~@Q6F-c<@>1b3EwAt zpZ0y;bM;|%d3|H;;p$4Iy0Q6Gd9vv~SX)_tRDI@FSGzmx8F`HkdW-l4$7>leb>W>j zm?Ut5qI25SC&|S}r5L3U`uZOp$5O~)*RW5X#S8KRY||Mji)NCTKTgq`zv$O2<2dBt zAQT+G+Lznz>q+(TS9okX+hat8#6?8>l{ZQXNb2#JoFXO&_4sdDKh?!&{HNrZ0p5{3 z+vPXT8dCCr{6NE$|@0Tx|iH-|*VcI5uzev03S6af6>y5klCU+db34jk!K*W?#a*@1>O z19CqE>lo13&Eiub>#@p$^$2fYBE->=U;^3V-bEoOE$ew>Ix`cq0?p9N>WP`y@zUwk zGFj!PNQ-~W93}I@8Nu`@D6)E;NdPYvR5R!KeAC5g6zZxsEr{8Rh?lL z8L-bp_Z(t=(XYURK#*J$4hpgpg~&ti`wOEj&|=OgWVPybEmzX?m6d|wAVs5aHKUge z2P_(T0RW_FrLvyMYni3Iwy5U{8wD}M)}A{n@GyQH{O>>8wq5vy3!kP$F!~n&AM%%6 z_+b}*%fVT|sN_d*YWHkBY6-~z428Nbp(CUs<;Nab4G2*Q>Q#<>lD@D#o^1LPvO5=jvE-++MPOuRV`7Ni|xX0!OR2mioDc=>3&Fhe7fu!#N jy$!5N_8^OS?W{%4DoLs1v$F_8R+WSlRP3~jV4vuJj>ryp delta 220 zcmeBBxgk42gDHZ0qgEd?CqDxOa7|WZJu_L3O=z+{+ge72$#>c0Cr{>+*=)fsz%=;) z=VeBQ&3Cv&m?qEQO_(gecY~>ddGaehGtL4Ih<1U=n*8QWJD4XcvWrcw;MagLckpX) z?O=wexxz5{6~7r%56fgF0XwGoED*H<8cYjVCNC1Onum; i++) mvaddch(f->a[i]->y, f->a[i]->x, apple_ch); } + +int field_xy_is_apple(Field *f, int x, int y, size_t *p) { + for (size_t i = 0; i < f->num; i++) { + if (f->a[i]->x == x) { + if (f->a[i]->y == y) { + *p = i; + return 1; + } + } + } + return 0; +} + +int field_relocate_apple(Field *f, size_t i) { + if (i > f->num) + return 0; + apple_move(f->a[i], irandom(5, f->x_max - 5), irandom(5, f->y_max - 5)); + return 1; +} diff --git a/src/include/apple.h b/src/include/apple.h index d985e0b..a4fd261 100644 --- a/src/include/apple.h +++ b/src/include/apple.h @@ -9,6 +9,6 @@ typedef struct apple_T { Apple *new_apple(int, int); void delete_apple(Apple *); -void apple_relocate(Apple *, int, int); +void apple_move(Apple *, int, int); #endif diff --git a/src/include/field.h b/src/include/field.h index 2b423cb..c4d2424 100644 --- a/src/include/field.h +++ b/src/include/field.h @@ -14,5 +14,7 @@ Field *new_field(size_t, int, int); void delete_field(Field *); void field_print(Field *); +int field_xy_is_apple(Field *, int, int, size_t *); +int field_relocate_apple(Field *, size_t); #endif diff --git a/src/include/snake.h b/src/include/snake.h index 0fee9d6..fa1b0ed 100644 --- a/src/include/snake.h +++ b/src/include/snake.h @@ -2,6 +2,7 @@ #define SNAKE_H #include "segment.h" +#include "field.h" enum dirn { UP = 0, @@ -20,6 +21,6 @@ void delete_snake(Snake *); void snake_forward(Snake *, int); void snake_print(Snake *); -int snake_eat(Snake *); +int snake_eat(Snake *, Field *); #endif diff --git a/src/main.c b/src/main.c index dbcdf33..4256fb9 100644 --- a/src/main.c +++ b/src/main.c @@ -56,7 +56,6 @@ int main(void) { clear(); refresh(); - field_print(f); switch (c) { case up_key: if (dirn != DOWN) @@ -78,8 +77,13 @@ int main(void) { goto quit; break; } + snake_forward(s, dirn); + score += snake_eat(s, f); + + mvprintw(getmaxy(stdscr) - 1, 0, "score: %d", score); snake_print(s); + field_print(f); refresh(); napms(screen_speed); diff --git a/src/snake.c b/src/snake.c index 8b2374c..84eb963 100644 --- a/src/snake.c +++ b/src/snake.c @@ -4,6 +4,8 @@ #include "include/main.h" #include "include/segment.h" #include "include/snake.h" +#include "include/field.h" +#include "include/apple.h" #include "../config.h" Snake *new_snake(size_t len, int x, int y) { @@ -60,4 +62,24 @@ void snake_print(Snake *s) { mvaddch(s->n[i]->y, s->n[i]->x, snake_ch); } -int snake_eat(Snake *); +int snake_eat(Snake *s, Field *f) { + size_t i; + Segment *c; + + if (field_xy_is_apple(f, s->n[0]->x, s->n[0]->y, &i)) { + if (!field_relocate_apple(f, i)) + return 0; + + c = new_segment(s->n[s->len - 1]->prev_x, s->n[s->len - 1]->prev_y); + + s->n = (Segment **)realloc(s->n, sizeof(Segment *) * ++(s->len)); + if (!s->n) + die("snake.c: snake_eat(): 's->n' is null pointer"); + + s->n[s->len - 1] = c; + + return 1; + } + + return 0; +}