From 064ace7bf14fd7f3b395787e736bb4b3a005a25c Mon Sep 17 00:00:00 2001 From: Michael Chen Date: Thu, 11 Jan 2018 01:06:55 +0100 Subject: [PATCH] Basic Movement works. No Collisions yet! --- bin/assets/images/paddle.png | Bin 0 -> 60028 bytes breakout.c | 95 ++++++++++++++++++++++++++++++++--- breakout.h | 18 ++++++- 3 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 bin/assets/images/paddle.png diff --git a/bin/assets/images/paddle.png b/bin/assets/images/paddle.png new file mode 100644 index 0000000000000000000000000000000000000000..4d54f4be4c78f11885e7d12551787b66e2219d15 GIT binary patch literal 60028 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.x, (obj->TargetRect).x); + // printf("Ball drawn at (%d|%d)!\n", (obj->TargetRect).x, (obj->TargetRect).x); SDL_RenderCopyEx(renderer, BALL_Texture, BALL_SourceRects + (obj->TextureIndex), &(obj->TargetRect), obj->Rotation, NULL, SDL_FLIP_NONE); } void BALL_Update(Ball * obj){ - obj->Location = vectorAdd(obj->Location, obj->Momentum); + (obj->Location) = vectorAdd((obj->Location), ( obj->Momentum)); (obj->TargetRect).x = (int)round((obj->Location).x); (obj->TargetRect).y = (int)round((obj->Location).y); - obj->Rotation += obj->RotationValue; - if ((obj->Location).y > BREAKOUT_BoxHeight) - obj->Location = (Vector) {.x = BREAKOUT_BoxWidth / 2, .y = BREAKOUT_BoxHeight / 2 }; + (obj->Rotation) += (obj->RotationValue); + if ((obj->Location).y > BREAKOUT_BoxHeight + (obj->Size)) + (obj->Location) = (Vector) {.x = BREAKOUT_BoxWidth / 2, .y = BREAKOUT_BoxHeight / 2 }; // Dead + if ((obj->Location).y < (obj->Size)) + (obj->Momentum).y = -(obj->Momentum).y; + if ((obj->Location).x < (obj->Size) || (obj->Location).x > BREAKOUT_BoxWidth - (obj->Size)) + (obj->Momentum).x = -(obj->Momentum).x; } void BALL_DestroyObject(Ball * obj){ } @@ -86,3 +99,71 @@ void BALL_Deinitialize(){ printf("Ball de-initialized!\n"); } + + +void PADDLE_Initialize(SDL_Renderer * renderer){ + printf("Initializing Paddle...\n"); + PADDLE_Texture = IMG_LoadTexture(renderer, "assets/images/paddle.png"); + if (!PADDLE_Texture) printf("Paddle texture failed to load!\n"); + PADDLE_SourceRects = (SDL_Rect *)malloc(1 * sizeof(SDL_Rect)); + if (!PADDLE_SourceRects) printf("FATAL! Memory allocation failed!\n"); + PADDLE_SourceRects[0] = (SDL_Rect) {.x = 0, .y = 0, .w = 512, .h = 512 }; + PADDLE_MoveLeftKeys = (Uint8 *)malloc(2 * sizeof(Uint8)); + if (!PADDLE_MoveLeftKeys) printf("FATAL! Memory allocation failed!\n"); + PADDLE_MoveRightKeys = (Uint8 *)malloc(2 * sizeof(Uint8)); + if (!PADDLE_MoveRightKeys) printf("FATAL! Memory allocation failed!\n"); + PADDLE_MoveLeftKeys[0] = 2; // Erster wert gibt größe des arrays an + PADDLE_MoveLeftKeys[1] = SDL_SCANCODE_LEFT; + PADDLE_MoveLeftKeys[2] = SDL_SCANCODE_A; + PADDLE_MoveRightKeys[0] = 2; + PADDLE_MoveRightKeys[1] = SDL_SCANCODE_RIGHT; + PADDLE_MoveRightKeys[2] = SDL_SCANCODE_D; + ball = BALL_CreateDefault(); + printf("Paddle initialized!\n"); +} + +Paddle PADDLE_CreateDefault(){ + int defaultpaddlewidth = 300; + + return (Paddle) { + .TargetRect = (SDL_Rect) {.x = (BREAKOUT_BoxWidth - defaultpaddlewidth) / 2, .y = BREAKOUT_BoxHeight - 100, .w = defaultpaddlewidth, .h = 30 }, + .TextureIndex = 0 + }; // Objekt für die Eigenschaften des Balls +} + +void PADDLE_Draw(SDL_Renderer * renderer, Paddle * obj){ + // printf("Paddle drawn at (%d|%d)!\n", (obj->TargetRect).x, (obj->TargetRect).x); + SDL_RenderCopy(renderer, PADDLE_Texture, PADDLE_SourceRects + (obj->TextureIndex), &(obj->TargetRect)); +} + +bool KeyPressed(Uint8 * keystate, Uint8 * keyArray){ + for (int i = 0; i < (*keyArray); i++) { + if (keystate[keyArray[(i + 1)]]) return true; + } + return false; +} + +void constrain(int * variable, int min, int max){ + if (*variable > max) + *variable = max; + else if (*variable < min) + *variable = min; +} + +void PADDLE_Update(Paddle * obj, Uint8 * keystate){ + bool leftKeyPressed = KeyPressed(keystate, PADDLE_MoveLeftKeys), rightKeyPressed = KeyPressed(keystate, PADDLE_MoveRightKeys); + + if (leftKeyPressed && (!rightKeyPressed)) { + ((obj->TargetRect).x) -= 5; + } else if ((!leftKeyPressed) && rightKeyPressed) { + ((obj->TargetRect).x) += 5; + } + constrain(&((obj->TargetRect).x), 0, (BREAKOUT_BoxWidth - ((obj->TargetRect).w))); +} +void PADDLE_DestroyObject(Paddle * obj){ +} +void PADDLE_Deinitialize(){ + printf("De-initializing Ball...\n"); + + printf("Ball de-initialized!\n"); +} diff --git a/breakout.h b/breakout.h index ce682d2..49a26cd 100644 --- a/breakout.h +++ b/breakout.h @@ -1,5 +1,11 @@ #ifndef __breakout_h__ #define __breakout_h__ +#include +#include +#include +#include +#include +#include #include "vector.h" @@ -12,9 +18,8 @@ typedef struct ballStruct { } Ball; // Objekt für die Eigenschaften des Balls typedef struct paddleStruct { - double XLocation; // Notice: Locked Y-Coordinate SDL_Rect TargetRect; - int XSize, TextureIndex; + int TextureIndex; } Paddle; // Objekt für die Eigenschaften des Paddles typedef struct blockStruct { @@ -35,6 +40,15 @@ void BALL_Draw(SDL_Renderer * renderer, Ball * obj); void BALL_Update(Ball * obj); void BALL_DestroyObject(Ball * obj); void BALL_Deinitialize(); +void PADDLE_Initialize(SDL_Renderer * renderer); +Paddle PADDLE_CreateDefault(); +void PADDLE_Draw(SDL_Renderer * renderer, Paddle * obj); +bool KeyPressed(Uint8 * keystate, Uint8 * keyArray); +void constrain(int * variable, int min, int max); +void PADDLE_Update(Paddle * obj, Uint8 * keystate); +void PADDLE_DestroyObject(Paddle * obj); +void PADDLE_Deinitialize(); + // End Prototypes #endif // __breakout_h__