From 64e70570e1af356f32b39f9668b8bbbb221dfcdf Mon Sep 17 00:00:00 2001 From: Seth Date: Mon, 21 Oct 2024 21:25:28 +1300 Subject: [PATCH] added code to move paddle --- bin/Debug/blockBreaker | Bin 24296 -> 24592 bytes blockBreaker.depend | 2 +- main.c | 37 ++++++++++++++++++++++++++++--------- obj/Debug/main.o | Bin 11256 -> 11928 bytes 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/bin/Debug/blockBreaker b/bin/Debug/blockBreaker index 7937d544be0aca70aef3a57bf4d2d7f4235bf708..2d12b1ab9d5c8b222faad3a6d3cceebb102d43fe 100755 GIT binary patch delta 5047 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 delta 4409 zcmbVOeQ;FO6~Fg=?B?y;WOuXqUSooM1%!MUFcH>#K+z2Z4JsOS;wB`aNCg8VEoflF zB#S_VAzmZUVx`ks3Zst9){OokWSnWjFr6B$I@oa(JGPS;N02&7t9JW4_q`-56Q|SO z+4s)9=lp)>oO|xa+e3qV^mTryKq*+;H~&LdYci9qHCd$cLZh5p!*Wr>i}?Q74xY)4 zprvC$aa6gK*87{?&#x^?j=xj=`JK;xb$V$bfB2o)F|{Z;e?7?YbhU`FFV`1(@_HmK zbl}$A(1Z@?kBM<_LDCvISiCY8@a6Hy?$3^c)Dr5|W)}b++PC6r$>31*>3_%LY$)1q ziDxWvn8aCfI{M9b@px!o^awPeUMcnskG==xQ1nqk4M*EZppAWi*Ko9bV)z<{z0$gG zxHsw`{k|b_CauWXh(xOPmdk!v_KVRkT{y&ex8(Eg*9mTT4laquGn$ZS>{DjJE?p+OdOp4M#ie;rP~G z*$*A*?cXkT`e%u@9L?_;U_FEFCAO*gTyJ!{7|aOVUAzEA6R?yM~;kL(e5Y( zz?cN`ZAHGr(Jl<|i;umGpxv*_VMnQFKtFLKW1fML-e{NjIQ_c(w=f*i6m5Ky1>zF) zlkb5t`z??@UIGW@-?NpjvutX&42d)-6!#olj^LgFx!|6GLC-)xt+{95?NIZ1;mgd5 zIKh(>;=|D%n5aVI0qmv*7j2hetB`&Fq6Hy4Jd-eYeQ*{4HhLc{!_mDqbIhYKcD9oY z71HqJgyGLv@m`4wQ8h^)Y90xR;f%D>_W3dgS@Vu;#D3REi0y!*v0c~DX)#LYO!9(? zUY453^tHXmX9m20K z?3EHj+G93|xJ1Er(!hdJVx*`+ro z=3re@e3CJ>@z3K392VaNW)>I!uygB-oC96viqy`9j)*S*4BQQ_^2B*u8z^Bq2No%l z^C9(Nu`zdM&0}+>rsRqK7OMag-KpJ|dC#Dyhc*y2bj9I%K#!*7IWu^`eXY0a1B=!Y z3^#KaYa{vXKfD-ZNz8n@Al3?q6M-3vpO`(Fr#jsdTM156*JVZ5GXGoDX$!UH{H%lo zuD1)3u*d!{uaSGFylNd4w%1_1!>~Ri@$rDI>lvKVIc+0M|8rDp_4o*Gy-@ReVta0S z#1#M(ZOa-}{umRfj+lCCSaFJHbSzu@*e*3Qc>xvB7`!eYimwD=cBeJ+@2N#eAUDXL1c zlrtu}8BdisX8s-5Hw9oU!z%^TEx{UXmQJkL%O$t!v!2%&%sgoWz6@RtU@k*%0iL5i ziv`ENvRbcC(;wd44y1k$K5FW7VpCaeO6oJfKy@dnekG2S&5I;I3suTFye{EMD#Xhr z-+pHH!@tLPA1XsVUIl^XUkRmCTZ}IEIhG=@-h!N%z7~3}KaRJeH{z}8FF~*ApU8|& zqGhQX@P^u1O`aHYzo|t4ne9CQwe}H!bCM|&sL-D)`&|1P{Q~zZP%GMb^ykUG%G4SR z_-sEt(=h((yY4G^`&tDz>^eDrU! zse|a3+BwvrzsN-pg>kNws-RRu#}}*g*TB<&zT+ZqgU5vc8T-k1+DT}QA?_x1`tN9P zjwi1sJC%=Re5)b8v(|GGgJx3GizU<06GW~_Ez)CzOz%LM$+G@JL2uQ`N4&UnZdE{*TIt*1IAtH`3Ymk< z?m8KrC}??j=qkv>#P|ycx)6$Ev9#b2Z!)=$r#d+*oiu~h_=~Vb3>_Wpk3~#PSu%q! zHE%I%{0e4heos@GO**%qt0|^wAD0>nGUqq$QRauWobdFAwlVPm61!6Z>?&1E4>sNi7@l}e3BYcZ^ zv+8l4Eml>BlibBG{7uhHdQo_nMOD>vF80i_VMRC8-I4WT(~5hQ#@yH+R@7-CcjbWi zaOLViQ%lPut*ox5enoBgp8M-o*xhB-wYB25RX01fHE(Tg-5l##T|_ib?>E4-1&5PsC~o5 z#x;daxTKhu1=zYOQcg8D^r^61dvo}p_puz-SY=@`lr4+&N)FplWh-nkOMJX0Q?G#a z27H diff --git a/main.c b/main.c index 34a7d94..d91a53e 100644 --- a/main.c +++ b/main.c @@ -4,15 +4,16 @@ #include #include #include -#define SCREEN_WIDTH 11 //set the width of the game screen -#define SCREEN_HEIGHT 20 //set the height of the game screen -#define PADDLE_SIZE 2 //set the paddle size. the blocks are added this amount either size of a central block. -#define SLEEP_TIME_MS 100 * 1000 //set the time to sleep between frames -#define PADDLE_HEIGHT SCREEN_HEIGHT-4 //the negative number is distance from the bottom -#define Y_BLOCK_LAYERS 10 //add the amount of layers of blocks from the top of the screen +#define SCREEN_WIDTH 11 //set the width of the game screen +#define SCREEN_HEIGHT 20 //set the height of the game screen +#define PADDLE_SIZE 2 //set the paddle size. the blocks are added this amount either size of a central block. +#define SLEEP_TIME_MS 100 * 1000 //set the time to sleep between frames +#define PADDLE_HEIGHT SCREEN_HEIGHT-4 //the negative number is distance from the bottom +#define Y_BLOCK_LAYERS 10 //add the amount of layers of blocks from the top of the screen #define X_BLOCK_LAYERS SCREEN_WIDTH uint8_t screen[SCREEN_WIDTH][SCREEN_HEIGHT]; //this is the array the game lives in +int moveArr[] = {-2,-1,0,1,2}; enum PIXEL_TYPE { //used to set what kind of pixel is shown on the screen array PIXEL_EMPTY=0u, @@ -41,10 +42,10 @@ typedef struct ballStruct { int8_t yVEL; } Ball_t; -struct Paddle { +typedef struct Paddle { uint8_t location; - uint8_t paddleSize; -} paddle= {.location=(SCREEN_WIDTH/2),.paddleSize=PADDLE_SIZE}; + int paddleSize; +} Paddle_t; typedef struct block { uint8_t xLocation; @@ -58,8 +59,22 @@ bool ballOnXEdge(Ball_t ball){ //work around to determine if the ball is on the return false; } +bool movePaddle(Paddle_t* Paddle, int dir){ //negitave dir to move left positive to move right + if (dir==0) return false; + if (dir<=0){ + if (Paddle ->location-Paddle->paddleSize+dir<=0) return false; + Paddle->location = Paddle->location+dir; + return true; + } else if (dir>=0) { + if (Paddle->location+Paddle->paddleSize+dir>= SCREEN_WIDTH-1) return false; + Paddle->location= Paddle->location+dir; + return true; + } +} + int main() { Ball_t ball = {.xPOS=0,.yPOS=0,.xVEL=0,.yVEL=0}; //setup game ball + Paddle_t paddle= {.location=(SCREEN_WIDTH/2),.paddleSize=PADDLE_SIZE}; time_t UNIXTIME = time(NULL); //create UNIXTIME struct srand(UNIXTIME); //seed random number with time at run time Block_t blockArr[X_BLOCK_LAYERS][Y_BLOCK_LAYERS]; @@ -201,5 +216,9 @@ int main() { ball.xPOS=ball.xPOS+ball.xVEL; ball.yPOS= ball.yPOS+ball.yVEL; + + //move paddle + movePaddle(&paddle,moveArr[rand()%6]); + } } diff --git a/obj/Debug/main.o b/obj/Debug/main.o index 7d1f9220f21394c31ec6020875dccc87c9d72118..7b82947913f7ad76403bd157346ddd891cdf2e8e 100644 GIT binary patch literal 11928 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 Qo_!FG|2o$g)oJ^G1N5|tcmMzZ