diff --git a/bin/Debug/cTest b/bin/Debug/cTest index 1d54a44..323b8a3 100755 Binary files a/bin/Debug/cTest and b/bin/Debug/cTest differ diff --git a/cTest.depend b/cTest.depend index 83bd3a8..08b6867 100644 --- a/cTest.depend +++ b/cTest.depend @@ -7,7 +7,7 @@ -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 9bb4fdd..d948e2a 100644 Binary files a/obj/Debug/main.o and b/obj/Debug/main.o differ