From 68c2ae249865a6f31f8d280723f9b797fbbba07c Mon Sep 17 00:00:00 2001 From: Noah Swerhun Date: Sat, 18 Sep 2021 00:02:33 -0500 Subject: [PATCH] apple field added --- config.h | 7 ++++++- nsnake | Bin 17584 -> 18160 bytes obj/apple.o | Bin 1848 -> 2112 bytes obj/field.o | Bin 0 -> 3048 bytes obj/main.o | Bin 4368 -> 5136 bytes obj/snake.o | Bin 3616 -> 3800 bytes src/apple.c | 8 ++++++++ src/field.c | 36 ++++++++++++++++++++++++++++++++++++ src/include/apple.h | 2 ++ src/include/field.h | 18 ++++++++++++++++++ src/include/main.h | 1 + src/main.c | 23 ++++++++++++++++++++--- src/snake.c | 7 ++++++- 13 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 obj/field.o create mode 100644 src/field.c create mode 100644 src/include/field.h diff --git a/config.h b/config.h index 6b50bd0..67d677a 100644 --- a/config.h +++ b/config.h @@ -8,13 +8,18 @@ #define left_key 'h' #define quit_key 'q' -// The starting legnth of the snake +// Starting legnth of the snake static const size_t starting_len = 15; +// Number of apples on the field +static const size_t n_apples = 10; + // Speed of snake (milliseconds between moves) static const int screen_speed = 150; // Character for each snake segment static const char snake_ch = '#'; +// Character for apples +static const char apple_ch = '*'; #endif diff --git a/nsnake b/nsnake index a7ff1bf2687ec2b7c2466ce77d4be3bbeed15ac3..fe9d052297541330540cc5c28f575f58c4ff5580 100755 GIT binary patch delta 5398 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 O6038eHqF3{Wd9d{oTTgk diff --git a/obj/apple.o b/obj/apple.o index 34e4548bed5818dcb3427b725711f16b24cf7fbc..62ef403ae012e33b2fb73d5c8faaa01595ccf98e 100644 GIT binary patch delta 389 zcmdnNcR*l*2GaqSiCT?9p&p%2J(}MLcy!kO=q&xx8Tw&jjH1AoP63Z@*B{-XA36hA zCY(GxahVt{B9lKqig~FFlh-pPO148)Fac?1Al8BM zr%ZmxBtBVy*+4J>Dgsgg!r7B8neQ{Mo7~7KJXwcDg|h&p4G1Poj$|=sd^dR_i#?FM z$YMYF0xJh&{A5X1b54Ioh#FzAt{hesrX)t7W5s}uWtqGN$jxA!e2LYLa|Tph#bik~ ub4~^ph%S%Gk!gu!C=c2Gb7aiCT@!3=9kt-|0>cU=*F4!PqhR2#dsI16G#FI!sq4OE7y(E?`cW z#9}bngXIQe_GCp?bIuJ+KpjAkFgcOcoN@JJK_=F#V|RF&5rRcLOq)V(+7shx7h4B6&N8(BPJ`dn{x_)oCE|0lM~s^xhkM?K&6Y= W%{VilwtGx|2vq6-RaydcnLGeg6)?#F diff --git a/obj/field.o b/obj/field.o new file mode 100644 index 0000000000000000000000000000000000000000..a7bf743bf87c697b9f42dab9b543ddb87aad97fe GIT binary patch literal 3048 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 literal 4368 zcmbuCUuYaf9LHyqv`Mw?rM1z6)TC)dm`1wEQcX}oj;vWKM_4gJ0%R@e*WI7>*KW@N(%mmQ z7Z(?G_w(b-O}xllB@Hg-mh#M1ir`+aI>A6FdO8q#W;_t;KN|==|5+eJtAS8P%@j_%=W@r9DvEjloK^U3W`+p{iF(N6@*Y2)gnL2*a4B zFSdfegmcm>oXy;1F)pc0U|zjk@kalR?kcLKQFAZPuegXU z#LPk5u_Ru}#M9HawrbaI)aF;5N9lzC{J2+j_gk+UH(HyCE@0%=hwxL5-Wj`@9;>Y? zMBS=h*-*j=U&L}tlRl|eHZr8mF3$0W^BqvYMVem+g(fVtL7^E6W)#_OxRD%rrj_VRN? zE4FK!SGTr}gLo70Ej)G?{eiXZZ#4C+S;_fc9@{3zUVz3>55jdEIoNyHv1r>osd)+( zYWRcl7V`UIqhND=7R#f}Y_`i8jzg0;*3t06K`!dJHfWE)g?u%uVcD~t;MUh`gs`;$ z_BdSao@CkY6AB(v@ID1Uq2L1wJ_sDgDaOa{3ouimx4C``pD4Rez={g}X$5~%!QWEw z2?c*w!9P&&j}`o!f`6spUn}@`3jULV|Dxc(DfpiXPO?VE3@3=~7?zVU2jj!kBzD50 z)QsDCN|VGkjUgIOq)9SEL6)SJMdH1&!v_z<;)f3%>WdzYA3bm|7LAis!OA$4yp+mY z8PiFTRDQ%s5L(PQBn1iMHgl{;k})$5bb|@e4bjoOktAl0Cek^Q7_g`@1hpg`HbzNe z#IoZyb%;p|aW))2s8r4>7*>)L62sK6NWr4ekDcaGHVR@I`K(O}gVez(&|&JpKyXTg zn#n>2pI5YZJO}$1Vejf+u&bhdDskN0#Xg4j9Sz@SJT-;>5<)P4o*z8S^!Gwp=zrwg zub-FnxJL;69}>q;6~Wi=_X@{@d%fU0B)(4KyEw;w*Gqh#q`yz%-4e$=T;%VOIPP_V zKds1rOw!*k=?#fLAn~*!kE7rd3jV%=U*jCt4bLDk{yUN$@4Gm+*o}ocuA9vFAppZX z55gt#L^$`avo7g7B>iE9{+OiSEa?*x$MaM4ds30dlJs((S0w(Bl&7S~Q<3x!OZtx_ zzE$F%NIWQUTyr!GEk;&-{s>G&iQ9eJ3GUAvQ&)s z|N0;#z*h{v?_`Vc$_2h&BF0}wQ6>27;=2~96R!~DA6i9xIl*x6#J1x5OFVCna?WK? z^X#s#U%~zTdQ9{`hS!+Kc&j z1H=Bs^A1I35#B%U{j!Pq3*QStQI>Um{srMdzxEjLR=E80KhE3x$0f!u`pQ88bNbt# z;q8k;$i2V)N#Kpv?+h*&nC>~Yet5o%_G0}S_05`KQm{>Y9C$|KJpJwQJEGB2Z9*|v YlW)O%Rf1=EqxQ3W{G%+((vQFW-w3$i=Kufz diff --git a/obj/snake.o b/obj/snake.o index 0cb51d435a01356ed6328a081c07ca4064e70540..9e7108a3400371ffecaa67f8a58f307c45bc5ffe 100644 GIT binary patch delta 889 zcmZ`&%}X0W6yMowlHKfX^I?)DXh|SYwu$v-Lj@E3pz2YikV_3VE>zlv#iY=aS`VHS zTppBML-RZl2xM|B( z-76dr^5y50?7ixRY+xxJm3)h!|3rPh0G|V1N@_Od-Z%sGp&UQd+{J}P3mz%`P*pn7 zeI^)r5L=VS%#geb*`PPAVv;QNL<&kVyesJY5l`ZspdUm$bq6oQMbILXKtdLoWjo|d z1(Z;dEU;VVJ>@58rEAo^K)=cr9^c#GQT0COA0q!!_KCa)dOYULQ@)?E9dhAxzEPWV z-M3CtYStGWr%`LVjx+BMrB;6}u^>!@w;yM)D(h0G>-L{-MZ{UL09{Flt34S*U{sO8 zl`yRKrp6Ij6(R<_Q>~0C=)yQSri;RsYQe2)#GfPDt=EE!JN3Q^x&-{CSrbCmJWhpW zO~4b)S{9>6VpLH5M!Z{fkH(n&5%^-ygKQMkSeU(o?zAe1v+C>}P`tqBICGESr65Qj ze%Hnb`2a*OMO=J_F&Renr*bC%yOA_(>UQ^duG?A%)jxn3C9)3BjEcOi_)NnlJMh)0 tkaM`9@Ja-R%yP;N(yyXsV`Ho-4K~c8)(-Q4bOk47N&AJrQVTxn+5dyM%dP+b delta 705 zcmZ`#JuE{}6u$Sh_1=Ab@2OVv)L$eO8b3o9MbIDyiA6+ML>fBzNvkm!5KAKw2{~dz z4HAhM8WuL2g@i$jY*r=_3FqE-D{pa<^YhO4o$uW9p6d#=J29o8@3x%LpW@T70^Odq z3PMOZI=6lFD1m#=E^K>4UfzO3?{#pCSN&EXuMC=HO5RX4Ncrnw)0gQIBt)a=l=z6j zsc6(mqz!ZM?~9OU+3$cLwCS1Cq(}n18uGw`A zJKsN!ElZRy_MrE`s}?eK7vmDLnhjOVh?uT!lYBqlXF)Hk3D0B2ZOnz}u)u8SVFrDN zI98{q5UFj@L~3aV?Iac ZQ=ZO$y$VBCD{GJ&ZeYbq&=?f0=3fDXqrCtC diff --git a/src/apple.c b/src/apple.c index ae5951e..61e880f 100644 --- a/src/apple.c +++ b/src/apple.c @@ -18,3 +18,11 @@ Apple *new_apple(int x, int y) { void delete_apple(Apple *a) { free_s(a); } + +void apple_relocate(Apple *a, int x, int y) { + if (!a) + die("apple.c: apple_relocate(): 'a' is null pointer"); + + a->x = x; + a->y = y; +} diff --git a/src/field.c b/src/field.c new file mode 100644 index 0000000..acdd947 --- /dev/null +++ b/src/field.c @@ -0,0 +1,36 @@ +#include +#include + +#include "include/main.h" +#include "include/field.h" +#include "include/apple.h" +#include "../config.h" + +Field *new_field(size_t num, int x_max, int y_max) { + Field *f; + f = (Field *)malloc(sizeof(Field)); + if (!f) + die("field.c: new_field(): 'f' is null pointer"); + + f->num = num; + f->x_max = x_max; + f->y_max = y_max; + f->a = (Apple **)malloc(sizeof(Apple *) * f->num); + if (!f->a) + die("field.c: new_field(): 'f->a' is null pointer"); + for (size_t i = 0; i < f->num; i++) + f->a[i] = new_apple(irandom(5, f->x_max - 5), irandom(5, f->y_max - 5)); + + return f; +} + +void delete_field(Field *f) { + for (size_t i = 0; i < f->num; i++) + delete_apple(f->a[i]); + free_s(f); +} + +void field_print(Field *f) { + for (size_t i = 0; i < f->num; i++) + mvaddch(f->a[i]->y, f->a[i]->x, apple_ch); +} diff --git a/src/include/apple.h b/src/include/apple.h index d1333a5..d985e0b 100644 --- a/src/include/apple.h +++ b/src/include/apple.h @@ -9,4 +9,6 @@ typedef struct apple_T { Apple *new_apple(int, int); void delete_apple(Apple *); +void apple_relocate(Apple *, int, int); + #endif diff --git a/src/include/field.h b/src/include/field.h new file mode 100644 index 0000000..2b423cb --- /dev/null +++ b/src/include/field.h @@ -0,0 +1,18 @@ +#ifndef FIELD_H +#define FIELD_H + +#include "apple.h" + +typedef struct field_T { + Apple **a; + size_t num; + int x_max; + int y_max; +} Field; + +Field *new_field(size_t, int, int); +void delete_field(Field *); + +void field_print(Field *); + +#endif diff --git a/src/include/main.h b/src/include/main.h index 5d4df47..02b5028 100644 --- a/src/include/main.h +++ b/src/include/main.h @@ -3,5 +3,6 @@ void die(char *, ...); void free_s(void *); +int irandom(int, int); #endif diff --git a/src/main.c b/src/main.c index 4473b48..9b9a623 100644 --- a/src/main.c +++ b/src/main.c @@ -2,9 +2,11 @@ #include #include #include +#include #include "include/main.h" #include "include/snake.h" +#include "include/field.h" #include "../config.h" void die(char *fmt, ...) { @@ -24,9 +26,18 @@ void free_s(void *p) { p = NULL; } +int irandom(int lower, int upper) { + int i; + i = (rand() % (upper - lower + 1)) + lower; + return i; +} + int main(void) { - int c, dirn; + int c, dirn, score; Snake *s; + Field *f; + + srand(time(NULL)); // init ncurses initscr(); @@ -37,9 +48,15 @@ int main(void) { curs_set(0); s = new_snake(starting_len, getmaxx(stdscr) / 2, getmaxy(stdscr) / 2); + f = new_field(n_apples, getmaxx(stdscr), getmaxy(stdscr)); dirn = UP; + score = 0; while ((c = getch())) { + clear(); + refresh(); + + field_print(f); switch (c) { case up_key: dirn = UP; break; case down_key: dirn = DOWN; break; @@ -48,14 +65,14 @@ int main(void) { case quit_key: goto quit; } snake_forward(s, dirn); - clear(); - refresh(); snake_print(s); + refresh(); napms(screen_speed); } quit: delete_snake(s); + delete_field(f); endwin(); } diff --git a/src/snake.c b/src/snake.c index ad7c5f5..8b2374c 100644 --- a/src/snake.c +++ b/src/snake.c @@ -16,7 +16,7 @@ Snake *new_snake(size_t len, int x, int y) { if (!s->n) die("snake.c: new_snake(): 's->n' is null pointer"); for (size_t i = 0; i < s->len; i++) - s->n[i] = new_segment(x, y--); + s->n[i] = new_segment(x, y++); return s; } @@ -30,6 +30,7 @@ void delete_snake(Snake *s) { void snake_forward(Snake *s , int dirn) { if (!s) die("snake.c: snake_forward(): 's' is null pointer"); + switch (dirn) { case UP: segment_move(s->n[0], s->n[0]->x, s->n[0]->y - 1); @@ -44,6 +45,7 @@ void snake_forward(Snake *s , int dirn) { segment_move(s->n[0], s->n[0]->x - 1, s->n[0]->y); break; } + for (size_t i = 1; i < s->len; i++) segment_move(s->n[i], s->n[i - 1]->prev_x, s->n[i - 1]->prev_y); @@ -51,6 +53,9 @@ void snake_forward(Snake *s , int dirn) { } void snake_print(Snake *s) { + if (!s) + die("snake.c: snake_print(): 's' is null pointer"); + for (size_t i = 0; i < s->len; i++) mvaddch(s->n[i]->y, s->n[i]->x, snake_ch); }