diff --git a/library/World/world.c b/library/World/world.c index 0eb8190d485b6016c5939a41c7b27efb8e24418a..80865fc95c5966f440f9b2e3c841c5066f3ad4a3 100644 --- a/library/World/world.c +++ b/library/World/world.c @@ -6,16 +6,16 @@ */ void update_data(world_t *world){ - world->ligneArriver->y += INITIAL_SPEED - world->speed_h; - world->mur->y += INITIAL_SPEED - world->speed_h; + world->ligneArriver->y += world->speed_h; + world->mur->y += world->speed_h; if (isOverScreen(world->vaisseau)){ if (world->vaisseau->x < 0) world->vaisseau->x = 0; if (world->vaisseau->x + world->vaisseau->w > SCREEN_WIDTH) world->vaisseau->x = SCREEN_WIDTH - world->vaisseau->w; if (world->vaisseau->y < 0) world->vaisseau->y = 0; if (world->vaisseau->y + world->vaisseau->h > SCREEN_HEIGHT) world->vaisseau->y = SCREEN_HEIGHT - world->vaisseau->h; - } + handle_sprite_collide(world->vaisseau, world->mur, world); } /** @@ -28,35 +28,6 @@ int is_game_over(world_t *world){ return world->gameover; } -int isOverScreen(sprite_t *sprite){ - if(sprite->x < 0 || sprite->x + sprite->w > SCREEN_WIDTH || sprite->y < 0 || sprite->y + sprite->h > SCREEN_HEIGHT){ - return 1; - } - return 0; -} - -void print_sprite(sprite_t *sprite){ - printf("x = %d, y = %d, w = %d, h = %d\n", sprite->x, sprite->y, sprite->w, sprite->h); -} - -/** - * \brief La fonction initialise les sprites du jeu - * - * \param sprite - * \param x - * \param y - * \param w - * \param h - */ -sprite_t *init_sprite(sprite_t *sprite, int x, int y, int w, int h){ - sprite = malloc(sizeof(sprite_t)); - sprite->x = x; - sprite->y = y; - sprite->w = w; - sprite->h = h; - return sprite; -} - /** * \brief La fonction initialise les données du monde du jeu * \param world les données du monde @@ -67,7 +38,7 @@ void init_data(world_t * world){ //on n'est pas à la fin du jeu world->gameover = 0; - world->speed_h = 0; + world->speed_h = INITIAL_SPEED; // Initialisation du vaisseau world->vaisseau = init_sprite(world->vaisseau, SCREEN_WIDTH/2 - SHIP_SIZE/2, SCREEN_HEIGHT - SHIP_SIZE, SHIP_SIZE, SHIP_SIZE); @@ -89,4 +60,11 @@ void clean_data(world_t *world){ free(world->vaisseau); } - +void handle_sprite_collide(sprite_t *sp1, sprite_t *sp2, world_t *world, int make_disappear){ + if (sprites_collide(sp1, sp2)){ + world->speed_h = 0; + + }else{ + world->speed_h = INITIAL_SPEED; + } +} \ No newline at end of file