diff --git a/constante.c b/constante.c index b82d014a6035146ea7a6fba5e602fdddb196da3a..bd243f1f8a0267a9d9dd395f62f2ae5a0a4c2c1b 100644 --- a/constante.c +++ b/constante.c @@ -22,6 +22,7 @@ #define METEORITE_SIZE 32 +#define METEORITE_REAL_SIZE 34 /** * \brief Hauteur de la ligne d'arrivée @@ -42,4 +43,16 @@ * \brief Vitesse initiale de déplacement vertical des éléments du jeu */ -#define INITIAL_SPEED 2 \ No newline at end of file +#define INITIAL_SPEED 16 + +/** + * \brief Nombre de lignes de météorites + * + */ +#define MAX_LINES 500 + +/** + * \brief Nombre maximum de météorite par ligne + * + */ +#define MAX_LENGTH 28 \ No newline at end of file diff --git a/library/Display/Display.c b/library/Display/Display.c index 1975d03b90de78b6b03f401cfb89206eb9ff6df6..c285fbb76ad23a24137931af3febf03dffd25a1b 100644 --- a/library/Display/Display.c +++ b/library/Display/Display.c @@ -7,14 +7,18 @@ void init_ressource(SDL_Renderer *renderer, ressources_t *textures){ textures->background = load_image( "ressources/Elements/backgrounds/1.png",renderer); textures->background2 = load_image( "ressources/Elements/backgrounds/3.png",renderer); textures->background3 = load_image( "ressources/Elements/backgrounds/2.png",renderer); - textures->ship = load_image( "ressources/spaceship.bmp",renderer); + textures->ship = load_image( "ressources/Elements/Ship_1.png",renderer); textures->finishLine = load_image( "ressources/finish_line.bmp",renderer); textures->font = load_font("ressources/font/arial.ttf", 14); textures->color = (SDL_Color){255, 255, 255, 255}; textures->BarreProgression = load_image( "ressources/Elements/BarreProgression.png",renderer); - textures->vaisseauMini = load_image( "ressources/spaceship.bmp",renderer); + textures->vaisseauMini = textures->ship; + + textures->soleilBarre = load_image( "ressources/Elements/soleil.png",renderer); + textures->soleil = load_image( "ressources/Elements/soleil.png",renderer); + init_ressource_element(renderer, textures); } @@ -85,19 +89,22 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,ressources_t *textu apply_sprite(renderer, textures->ship, world->vaisseau, world); apply_sprite(renderer, textures->finishLine, world->ligneArriver, world); apply_walls(renderer, textures->meteorite, world, textures); - + apply_sprite(renderer, textures->soleil, world->soleil, world); if (timer_update_s(world) != 0){ world->str[0] = '\0'; world->str = strcats(world->str, 3, "temps: ",int_to_str((int)world->timer/1000), "s"); } apply_text(renderer, 10, 10, 100, 33, world->str, textures->font, textures->color); + apply_sprite(renderer, textures->BarreProgression, world->BarreProgression, world); + apply_sprite(renderer, textures->vaisseauMini, world->vaisseauMini, world); + apply_sprite(renderer, textures->soleilBarre, world->soleilBarre, world); + }else{ apply_text(renderer, 10, 10, 100, 33, "Menu", textures->font, textures->color); printf("aaa"); } - apply_sprite(renderer, textures->BarreProgression, world->BarreProgression, world); - apply_sprite(renderer, textures->vaisseauMini, world->vaisseauMini, world); + update_screen(renderer); } diff --git a/library/Display/Display.h b/library/Display/Display.h index 5972538bbb21f71f438d360b944bcd27122e62f2..8a293a987d63f108adb70f93e83a72c066fc2505 100644 --- a/library/Display/Display.h +++ b/library/Display/Display.h @@ -41,6 +41,10 @@ struct ressources_s{ SDL_Texture* finishLine; /*!< Texture liée à l'image de la ligne d'arrivée. */ SDL_Texture* BarreProgression; /*!< Texture liée à l'image de l'air. */ SDL_Texture* vaisseauMini; /*!< Texture liée à l'image du vaisseau. */ + + SDL_Texture* soleilBarre; /*!< Texture liée à l'image du soleil. */ + SDL_Texture* soleil; /*!< Texture liée à l'image du soleil. */ + TTF_Font *font; // Font SDL_Color color; // Color long double angle; /*!< Angle de rotation de l'image. */ diff --git a/library/Display/Display.o b/library/Display/Display.o index 43f74c5d11e683c26eba5c1d6c8db98320aee278..ca25ecf6e4d4eb9ab0f26344c1819e7fe47de2bf 100644 Binary files a/library/Display/Display.o and b/library/Display/Display.o differ diff --git a/library/Sprites/sprites.c b/library/Sprites/sprites.c index d67d4f56e46892f7bb6115fd89461616bb2275a9..410dde85c1a2e268e45b3868f40d7a3d0f5e230b 100644 --- a/library/Sprites/sprites.c +++ b/library/Sprites/sprites.c @@ -20,6 +20,7 @@ sprite_t *init_sprite(sprite_t *sprite, int x, int y, int w, int h, char id){ sprite->w = w; sprite->h = h; sprite->id = malloc(sizeof(char) * 10); + sprite->dy = 0.0; strcpy(sprite->id, &id); return sprite; diff --git a/library/Sprites/sprites.h b/library/Sprites/sprites.h index 3436a48d94baba387e6fb17b80b0d4e195947f76..79f3dd814a6fd87cbb82c0820ee63170381c9f58 100644 --- a/library/Sprites/sprites.h +++ b/library/Sprites/sprites.h @@ -28,6 +28,7 @@ struct sprite_s{ int y; int w; int h; + float dy; char * id; }; diff --git a/library/Sprites/sprites.o b/library/Sprites/sprites.o index 796391e0984f8bb31c401238dbe68a3cca30be23..bd4c4897dd5bcc4379a2ebba4c8024a83d39b192 100644 Binary files a/library/Sprites/sprites.o and b/library/Sprites/sprites.o differ diff --git a/library/World/world.c b/library/World/world.c index 1da0af322c8e01ccba5fbe761d583ca457bb3496..fa2da20f49a0befe9d2974c4a81ab0a4999c4272 100644 --- a/library/World/world.c +++ b/library/World/world.c @@ -6,27 +6,36 @@ void init_data(world_t * world){ //on n'est pas à la fin du jeu world->gameover = 0; world->speed_h = (float)INITIAL_SPEED; + init_walls(world); // Initialisation du vaisseau world->vaisseau = init_sprite(world->vaisseau, SCREEN_WIDTH/2 - SHIP_SIZE/2, SCREEN_HEIGHT - SHIP_SIZE-15, SHIP_SIZE, SHIP_SIZE, '0'); - init_walls(world); - world->ligneArriver = init_sprite(world->ligneArriver, 0, -world->nb_lines_murs*METEORITE_SIZE-30 , SCREEN_WIDTH, FINISH_LINE_HEIGHT, 'z'); + world->ligneArriver = init_sprite(world->ligneArriver, 0, -world->nb_lines_murs*METEORITE_REAL_SIZE-30 , SCREEN_WIDTH, FINISH_LINE_HEIGHT, 'z'); world->BarreProgression = init_sprite(world->BarreProgression, 10, SCREEN_HEIGHT - 500, 50, 400, 'y'); world->vaisseauMini = init_sprite(world->vaisseauMini, 10, SCREEN_HEIGHT - 130, 20, 20, 'x'); + world->soleilBarre = init_sprite(world->soleilBarre, 0, SCREEN_HEIGHT - 510, 40, 40, 'x'); + world->soleil = init_sprite(world->soleil, SCREEN_WIDTH/2-1800/2, -world->nb_lines_murs*METEORITE_REAL_SIZE-1400, 1800, 1800, 'z'); + + world->vaisseauMini->y = SCREEN_HEIGHT - (110); + world->vaisseauMini->dy = SCREEN_HEIGHT - (110); print_sprite(world->vaisseau); world->startTimer = SDL_GetTicks(); world->timer = SDL_GetTicks(); world->str = malloc(sizeof(char)*100); world->angle = 0.0; world->isFlipping = 0; - world->isMenu = false; + world->isMenu = false; world->parallax = 0; + world->invicibility = true; } void update_data(world_t *world){ if (!world->isMenu){ world->ligneArriver->y += (int)world->speed_h; - world->vaisseauMini->y = 16028 + world->ligneArriver->y + SCREEN_HEIGHT -100; - printf("%d\n", world->ligneArriver->y); + world->soleil->y += (int)world->speed_h; + + world->vaisseauMini->dy -= world->speed_h/(MAX_LINES*METEORITE_REAL_SIZE+700)*400; + world->vaisseauMini->y = (int)world->vaisseauMini->dy; + world->parallax += (int)world->speed_h; update_walls(world); if (isOverScreen(world->vaisseau)){ @@ -35,8 +44,10 @@ void update_data(world_t *world){ 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; } - for(int i = 0; i < world->nb_murs; i++){ - collide(world->vaisseau, world->murs[i], world, 0); + if (!world->invicibility){ + for(int i = 0; i < world->nb_murs; i++){ + collide(world->vaisseau, world->murs[i], world, 0); + } } collide(world->vaisseau, world->ligneArriver, world, 1); diff --git a/library/World/world.h b/library/World/world.h index c127801a5040b6cb24688c7e84c8cf27b5b2c055..bc4bccc7dfe4b36f3611ae50a630c506d8900c04 100644 --- a/library/World/world.h +++ b/library/World/world.h @@ -39,6 +39,8 @@ struct world_s{ sprite_t **murs2; /*<Représentation des météorites et de l'air>*/ sprite_t *BarreProgression; sprite_t *vaisseauMini; + sprite_t *soleilBarre; + sprite_t *soleil; int nb_murs; // Nombre de météorites int nb_lines_murs; // Nombre de lignes de météorites sprite_t *ligneArriver; @@ -52,6 +54,7 @@ struct world_s{ bool isMenu; int parallax; + bool invicibility; }; typedef struct world_s world_t; diff --git a/library/World/world.o b/library/World/world.o index f70a090d5e96ab151a7685db17877d39597ae6e3..25d0a95c7915071d1028a6742e77e602c4527c9f 100644 Binary files a/library/World/world.o and b/library/World/world.o differ diff --git a/library/utility/utility.h b/library/utility/utility.h index 5913cf6999d2e8213d463875dfccd4d8f95a3552..987adc67990829df6eda2344449aca1ce9356f3b 100644 --- a/library/utility/utility.h +++ b/library/utility/utility.h @@ -9,11 +9,10 @@ * */ #include <stdarg.h> - +#include "../../constante.c" #ifndef Utility_h #define Utility_h -#define MAX_LINES 500 -#define MAX_LENGTH 28 + /** * \brief Concatène plusieurs chaines de caractères diff --git a/main.o b/main.o index 1b397cb2cfb757271f864f88b076a88e022e26dd..d64b196fbec15598f07cf46ceb3e4a4fd22a43ae 100644 Binary files a/main.o and b/main.o differ diff --git a/ressources/Elements/BarreProgression.png b/ressources/Elements/BarreProgression.png index 19fbdca8bcabf0c21f62944b35a013a1516ddc2e..0c3c7d810386ab2a144fe94efa4334a347bbb63a 100644 Binary files a/ressources/Elements/BarreProgression.png and b/ressources/Elements/BarreProgression.png differ diff --git a/ressources/Elements/backgrounds/1.png b/ressources/Elements/backgrounds/1.png index 0af7b12486d5767a021d873be42f39b9e74a0ffc..029df89f00bb1e1788d025a2bead39b5169c9439 100644 Binary files a/ressources/Elements/backgrounds/1.png and b/ressources/Elements/backgrounds/1.png differ diff --git a/ressources/Elements/soleil.png b/ressources/Elements/soleil.png new file mode 100644 index 0000000000000000000000000000000000000000..0407d3ee7c7e409e84152914c8383b5f86e56774 Binary files /dev/null and b/ressources/Elements/soleil.png differ diff --git a/spacecorridor.exe b/spacecorridor.exe index 87a5f628cfdcde27a1f6b8109787bed8398d57f5..e8f47fb05240485befc9f31d76799bd21cf21c5b 100644 Binary files a/spacecorridor.exe and b/spacecorridor.exe differ