From 31dd86a53c2ac10b2e08cb3fff6d0ca3558b844a Mon Sep 17 00:00:00 2001 From: Seth Date: Fri, 11 Oct 2024 22:17:27 +1300 Subject: [PATCH] blocks disapear when hit by the ball --- bin/Debug/cTest | Bin 23944 -> 23952 bytes cTest.depend | 2 +- main.c | 52 +++++++++++++++++++++++++++++++++-------------- obj/Debug/main.o | Bin 11048 -> 11768 bytes 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/bin/Debug/cTest b/bin/Debug/cTest index 1d54a44dd1640e79b06e56130f7e545ef861f11b..323b8a3d900c02fbb4c265cca2ea4bea368330d5 100755 GIT binary patch delta 3609 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 R5AVBr?xr$QrSIC5{a -1728183838 source:/home/fluffy/codeBlocks/blockBreaker/main.c +1728637902 source:/home/fluffy/codeBlocks/blockBreaker/main.c diff --git a/main.c b/main.c index 5072448..d1b994c 100644 --- a/main.c +++ b/main.c @@ -13,6 +13,7 @@ #define SLEEP_TIME_MS 100 * 1000 #define PADDLE_HEIGHT SCREEN_HEIGHT-4 #define Y_BLOCK_LAYERS 4 +#define X_BLOCK_LAYERS SCREEN_WIDTH uint8_t screen[SCREEN_WIDTH][SCREEN_HEIGHT]; @@ -37,7 +38,6 @@ struct ballStruct { uint8_t yPOS; int8_t xVEL; int8_t yVEL; - } ball= {.xPOS=0,.yPOS=0,.xVEL=0,.yVEL=0}; struct Paddle { @@ -55,11 +55,15 @@ int main() { //struct ballStruct ball; time_t UNIXTIME = time(NULL); srand(UNIXTIME); //seed random number with time at run time - int noXBlocks = SCREEN_WIDTH; - Block_t blockArr[noXBlocks][Y_BLOCK_LAYERS]; - for (int x=0;x< noXBlocks;x++) { - for (int y=0; y"); } else if(screen[x][y]==PIXEL_PADDLE) { printf("=="); - } else if(screen[x][y]==PIXEL_BLOCK){ + } else if(screen[x][y]==PIXEL_BLOCK) { printf("[]"); } } @@ -122,16 +127,33 @@ int main() { if (ball.yPOS==0||ball.yPOS==(SCREEN_HEIGHT-1)) { ball.yVEL=ball.yVEL*-1; } - //detect when ball hits a block or paddle - if(screen[ball.xPOS+ball.xVEL][ball.yPOS]==PIXEL_BLOCK||screen[ball.xPOS+ball.xVEL][ball.yPOS]==PIXEL_PADDLE) { + //detect when ball hits a block + if (screen[ball.xPOS+ball.xVEL][ball.yPOS]==PIXEL_BLOCK) { + blockArr[ball.xPOS+ball.xVEL][ball.yPOS].visable=false; + ball.xVEL = ball.xVEL *-1; + blockFlushHit=true; + } + if (screen[ball.xPOS][ball.yPOS+ball.yVEL]==PIXEL_BLOCK) { + blockArr[ball.xPOS][ball.yPOS+ball.yVEL].visable=false; + ball.yVEL = ball.yVEL *-1; + blockFlushHit=true; + } + if (screen[ball.xPOS+ball.xVEL][ball.yPOS+ball.yVEL]==PIXEL_BLOCK&&blockFlushHit==false) { + blockArr[ball.xPOS+ball.xVEL][ball.yPOS+ball.yVEL].visable=false; + ball.xVEL = ball.xVEL *-1; + ball.yVEL=ball.yVEL *-1; + } + + //detect when ball hits paddle + if(screen[ball.xPOS+ball.xVEL][ball.yPOS]==PIXEL_PADDLE) { ball.xVEL = ball.xVEL *-1; } - if (screen[ball.xPOS][ball.yPOS+ball.yVEL]==PIXEL_BLOCK||screen[ball.xPOS][ball.yPOS+ball.yVEL]== PIXEL_PADDLE) { //hit detection y direction + if (screen[ball.xPOS][ball.yPOS+ball.yVEL]== PIXEL_PADDLE) { //hit detection y direction ball.yVEL= ball.yVEL*-1; } - if (screen[ball.xPOS+ball.xVEL][ball.yPOS+ball.yVEL]==PIXEL_BLOCK||screen[ball.xPOS+ball.xVEL][ball.yPOS+ball.yVEL]==PIXEL_PADDLE) { //diagonal hit detection + if (screen[ball.xPOS+ball.xVEL][ball.yPOS+ball.yVEL]==PIXEL_PADDLE) { //diagonal hit detection ball.xVEL = ball.xVEL *-1; - ball.xVEL=ball.yVEL *-1; + ball.yVEL=ball.yVEL *-1; } //update ball position ball.xPOS=ball.xPOS+ball.xVEL; diff --git a/obj/Debug/main.o b/obj/Debug/main.o index 9bb4fddaa418963dc2e0601920506638bfaae8e2..d948e2aa8ab4971ee91d4d70c3beca12cfff276b 100644 GIT binary patch literal 11768 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 RnZE2-kp5re8ly68|6hwO7Zm^i delta 4294 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