Set ball starting position next to the rackets
This commit is contained in:
parent
05addb3baa
commit
c5e8473d79
10
src/ball.c
10
src/ball.c
@ -5,13 +5,14 @@
|
||||
#include "racket.h"
|
||||
|
||||
Ball*
|
||||
Ball_init(int screen_width, int screen_height)
|
||||
Ball_init(int screen_width, int screen_height, int posX_start)
|
||||
{
|
||||
srand(time(NULL));
|
||||
Ball *b = malloc(sizeof(Ball));
|
||||
*(int *)&b->BALL_WIDTH = 20;
|
||||
*(int *)&b->BALL_HEIGHT = 20;
|
||||
*(int *)&b->BALL_VELOCITY = 7;
|
||||
*(int *)&b->BALL_POSX_START = posX_start;
|
||||
*(int *)&b->SCREEN_WIDTH = screen_width;
|
||||
*(int *)&b->SCREEN_HEIGHT = screen_height;
|
||||
Ball_reset(b, 1);
|
||||
@ -25,7 +26,12 @@ Ball_reset(Ball *b, int direction) {
|
||||
do {
|
||||
angle = rand() % 60 + 60;
|
||||
} while (angle == 90);
|
||||
b->posX = b->SCREEN_WIDTH/2;
|
||||
if (direction < 0) {
|
||||
b->posX = b->BALL_POSX_START;
|
||||
}
|
||||
else {
|
||||
b->posX = b->SCREEN_WIDTH - b->BALL_POSX_START;
|
||||
}
|
||||
b->posY = b->SCREEN_HEIGHT/2;
|
||||
b->velX = direction * b->BALL_VELOCITY * cos(angle * 2 * M_PI / 180);
|
||||
b->velY = b->BALL_VELOCITY * sin(angle * 2 * M_PI / 180);
|
||||
|
@ -10,6 +10,7 @@ typedef struct Ball {
|
||||
const int BALL_WIDTH;
|
||||
const int BALL_HEIGHT;
|
||||
const int BALL_VELOCITY;
|
||||
const int BALL_POSX_START;
|
||||
const int SCREEN_WIDTH;
|
||||
const int SCREEN_HEIGHT;
|
||||
int posX;
|
||||
@ -18,7 +19,7 @@ typedef struct Ball {
|
||||
int velY;
|
||||
} Ball;
|
||||
|
||||
Ball* Ball_init(int screen_width, int screen_height);
|
||||
Ball* Ball_init(int screen_width, int screen_height, int posX_start);
|
||||
void Ball_reset(Ball *b, int direction);
|
||||
void Ball_free(Ball *b);
|
||||
//void Ball_handle_event(Ball *b, SDL_Event *e);
|
||||
|
@ -10,7 +10,7 @@ Pong_init() {
|
||||
*(int *)&p->SCREEN_WIDTH = 640;
|
||||
*(int *)&p->SCREEN_HEIGHT = 480;
|
||||
|
||||
p->ball = Ball_init(p->SCREEN_WIDTH, p->SCREEN_HEIGHT);
|
||||
p->ball = Ball_init(p->SCREEN_WIDTH, p->SCREEN_HEIGHT, 100);
|
||||
p->racketL = Racket_init(p->SCREEN_WIDTH, p->SCREEN_HEIGHT, 50, 50, SDL_SCANCODE_E, SDL_SCANCODE_D);
|
||||
p->racketR = Racket_init(p->SCREEN_WIDTH, p->SCREEN_HEIGHT, p->SCREEN_WIDTH - 50, 50, SDL_SCANCODE_I, SDL_SCANCODE_K);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user