Skip to content
Snippets Groups Projects
Commit a0c04471 authored by SmallIshMink's avatar SmallIshMink
Browse files

Ajout de la barre de vitesse, ajustement de la vitesse, ajout de la boutique,...

Ajout de la barre de vitesse, ajustement de la vitesse, ajout de la boutique, correction bug argent qui s'affichait mal dans la boutique et sur le menu. Capable de changer de skin
parent f3edd5fb
Branches
No related tags found
No related merge requests found
......@@ -9,31 +9,36 @@ 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/Elements/Ship_1.png",renderer);
textures->ships = malloc(sizeof(SDL_Texture*)*4);
textures->ships[0] = load_image( "ressources/Elements/Ship_1.png",renderer);
textures->ships[1] = load_image( "ressources/Elements/Ship_2.png",renderer);
textures->ships[2] = load_image( "ressources/Elements/Ship_3.png",renderer);
textures->ships[3] = load_image( "ressources/Elements/Ship_4.png",renderer);
textures->exit_shp = load_image( "ressources/exit.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 = textures->ship;
textures->vaisseauMini = textures->ships[0];
textures->soleilBarre = load_image( "ressources/Elements/soleil.png",renderer);
textures->soleil = load_image( "ressources/Elements/soleil.png",renderer);
printf("aaa");
textures->buy = load_image( "ressources/Elements/shop/buy.png",renderer);
textures->nomoney = load_image( "ressources/Elements/shop/nomoney.png",renderer);
textures->sell = load_image( "ressources/Elements/shop/sell.png",renderer);
textures->selected = load_image("ressources/Elements/shop/selected.png", renderer);
textures->nb_init = 9;
textures->nb_init = 19;
init_ressource_element(renderer, textures);
}
void init_ressource_element(SDL_Renderer *renderer, ressources_t *textures){
textures->meteorite = load_image( "ressources/meteorite.bmp",renderer);
textures->e_rotate = load_image("ressources/Elements/reverse.bmp", renderer);
textures->e_rotate = load_image("ressources/Elements/e_rotate.png", renderer);
textures->coins = load_image("ressources/Elements/coin.png", renderer);
textures->nb_init += 3;
}
......@@ -72,7 +77,7 @@ void apply_sprite_fixed(SDL_Renderer * renderer, SDL_Texture *texture, sprite_t
rect.w = sprite->w;
rect.h = sprite->h;
SDL_RenderCopyEx(renderer, texture, NULL, &rect, world->angle*180/M_PI, NULL, SDL_FLIP_NONE);
SDL_RenderCopyEx(renderer, texture, NULL, &rect, 0, NULL, SDL_FLIP_NONE);
}
}
......@@ -109,6 +114,7 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,ressources_t *textu
//on vide le renderer
clear_renderer(renderer);
if (world->gamestate == 0){
ingame(renderer,world,textures);
}else if(world ->gamestate==1){
inmenu(renderer,world,textures);
......@@ -128,22 +134,33 @@ void inmenu(SDL_Renderer *renderer, world_t *world,ressources_t *textures){
void inshop(SDL_Renderer *renderer, world_t *world, ressources_t *textures){
apply_background(renderer, textures->bshop, world);
apply_text(renderer, 150, 150, 50, 25, "200$", textures->font, textures->color);
apply_text(renderer, 150, 150, 50, 25, "0$", textures->font, textures->color);
apply_text(renderer, 360, 145, 50, 25, "500$", textures->font, textures->color);
apply_text(renderer, 560, 140, 50, 25, "1000$", textures->font, textures->color);
apply_text(renderer, 370, 315, 50, 25, "2000$", textures->font, textures->color);
apply_sprite_fixed(renderer, textures->ships[0], world->vaisseau1, world);
apply_sprite_fixed(renderer, textures->ships[1], world->vaisseau2, world);
apply_sprite_fixed(renderer, textures->ships[2], world->vaisseau3, world);
apply_sprite_fixed(renderer, textures->ships[3], world->vaisseau4, world);
for (int i = 0; i<4; i++){
if (world->shopPrice[i] <= world->money){
if (world->isSelected[i]){
apply_sprite_fixed(renderer, textures->selected, world->Spr_ship[i], world);
}else if(world->isBought[i]){
apply_sprite_fixed(renderer, textures->sell, world->Spr_ship[i], world);
}else if (world->shopPrice[i] <= world->money){
apply_sprite_fixed(renderer, textures->buy, world->Spr_ship[i], world);
}else{
apply_sprite_fixed(renderer, textures->nomoney, world->Spr_ship[i], world);
}
}
printf("aaa");
apply_text(renderer, (SCREEN_WIDTH-90)-(25*number_of_numbers(world->money)), 20, 25*number_of_numbers(world->money), 50, world->coin_menu_str, textures->font, textures->color);
apply_sprite(renderer, textures->exit_shp, world->exit_shp , world);
apply_sprite(renderer, textures->exit_shp, world->exit_shop , world);
printf("aaa\n");
}
void ingame(SDL_Renderer *renderer, world_t *world,ressources_t *textures){
......@@ -153,11 +170,12 @@ void ingame(SDL_Renderer *renderer, world_t *world,ressources_t *textures){
apply_background_parralax(renderer, textures->background, world, 7);
apply_background_parralax(renderer, textures->background2, world, 3);
apply_background_parralax(renderer, textures->background3, world, 9);
apply_sprite(renderer, textures->ship, world->vaisseau, world);
apply_sprite(renderer, textures->ships[world->actualship], 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);
apply_text(renderer, 10, 10, 100, 33, world->temps_str, textures->font, textures->color); // Temps de jeu
apply_text(renderer, SCREEN_WIDTH-(60+10*number_of_numbers(world->money)), 10, 15*number_of_numbers(world->money), 30, world->coins_str, textures->font, textures->color);
......@@ -166,6 +184,8 @@ void ingame(SDL_Renderer *renderer, world_t *world,ressources_t *textures){
apply_sprite_fixed(renderer, textures->vaisseauMini, world->vaisseauMini, world);
apply_sprite_fixed(renderer, textures->soleilBarre, world->soleilBarre, world);
apply_sprite_fixed(renderer, textures->coins, world->coins, world);
draw_progressbarre(renderer, world, world->pgb);
// Update de l'écran
update_screen(renderer);
......@@ -180,8 +200,37 @@ void clean(SDL_Window *window, SDL_Renderer * renderer, ressources_t *textures,
void clean_textures(ressources_t *textures){
SDL_DestroyTexture(textures->background);
SDL_DestroyTexture(textures->ship);
SDL_DestroyTexture(textures->ships[0]);
SDL_DestroyTexture(textures->ships[1]);
SDL_DestroyTexture(textures->ships[2]);
SDL_DestroyTexture(textures->ships[3]);
SDL_DestroyTexture(textures->meteorite);
SDL_DestroyTexture(textures->finishLine);
SDL_DestroyTexture(textures->BarreProgression);
SDL_DestroyTexture(textures->vaisseauMini);
SDL_DestroyTexture(textures->soleilBarre);
SDL_DestroyTexture(textures->soleil);
SDL_DestroyTexture(textures->coins);
SDL_DestroyTexture(textures->bmenu);
SDL_DestroyTexture(textures->bshop);
SDL_DestroyTexture(textures->background2);
SDL_DestroyTexture(textures->background3);
SDL_DestroyTexture(textures->exit_shp);
SDL_DestroyTexture(textures->buy);
SDL_DestroyTexture(textures->nomoney);
SDL_DestroyTexture(textures->sell);
SDL_DestroyTexture(textures->selected);
clean_font(textures->font);
}
void draw_progressbarre(SDL_Renderer *renderer, world_t *world, progressBarre_t *pgb){
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderFillRect(renderer, pgb->Contours);
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
SDL_RenderFillRect(renderer, pgb->Barre);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
}
\ No newline at end of file
......@@ -32,13 +32,18 @@
* \param color
*
*/
struct ressources_s{
SDL_Texture* background; /*!< Texture liée à l'image du fond de l'écran. */
SDL_Texture* bmenu;/*!< Texture liée à l'image du fond du menu. */
SDL_Texture* bshop; /*!< Texture liée à l'image du fond du gameover. */
SDL_Texture* background2; /*!< Texture liée à l'image du fond de l'écran. (effet parallax) */
SDL_Texture* background3; /*!< Texture liée à l'image du fond de l'écran. (effet parallax) */
SDL_Texture* ship; /*!< Texture liée à l'image du vaisseau. */
SDL_Texture** ships;
SDL_Texture* exit_shp;
SDL_Texture* meteorite; /*!< Texture liée à l'image du météorite. */
......@@ -54,6 +59,9 @@ struct ressources_s{
SDL_Texture* buy; /*!< Texture liée à l'image du bouton buy. */
SDL_Texture* nomoney; /*!< Texture liée à l'image du bouton nomoney. */
SDL_Texture* sell; /*!< Texture liée à l'image du bouton sell. */
SDL_Texture* selected;
TTF_Font *font; // Font
SDL_Color color; // Color
......@@ -61,8 +69,11 @@ struct ressources_s{
int nb_init; /*!< Nombre d'initialisation. */
};
typedef struct ressources_s ressources_t;
/**
* \brief La fonction initialise les textures du jeu
*
......@@ -181,4 +192,6 @@ void inmenu(SDL_Renderer *renderer, world_t *world,ressources_t *textures);
* @param textures
*/
void inshop(SDL_Renderer *renderer, world_t *world, ressources_t *textures);
void draw_progressbarre(SDL_Renderer *renderer, world_t *world, progressBarre_t *pgb);
#endif
\ No newline at end of file
No preview for this file type
No preview for this file type
......@@ -26,11 +26,10 @@ void update_data(world_t *world){
world->temps_str = strcats(world->temps_str, 3, "temps: ",int_to_str((int)world->timer/1000), "s");
}
allEvents(world);
world->timer = SDL_GetTicks() - world->startTimer;;
world->timer = SDL_GetTicks() - world->startTimer;
}else if(world->gamestate == 1){
world->startTimer = SDL_GetTicks();
}else if(world->gamestate == 2){
printf("%d\n", world->money);
}
}
......@@ -47,9 +46,9 @@ void init_data(world_t * world){
init_shop(world);
printf("test\n");
// 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', 0);
world->ligneArriver = init_sprite(world->ligneArriver, 0, -world->nb_lines_murs*METEORITE_REAL_SIZE-30 , SCREEN_WIDTH, FINISH_LINE_HEIGHT, 'z', 0);
world->BarreProgression = init_sprite(world->BarreProgression, 10, SCREEN_HEIGHT - 500, 50, 400, 'y', 0);
world->vaisseauMini = init_sprite(world->vaisseauMini, 10, SCREEN_HEIGHT - 130, 20, 20, 'x', 0);
......@@ -57,6 +56,8 @@ void init_data(world_t * world){
world->soleil = init_sprite(world->soleil, SCREEN_WIDTH/2-1800/2, -world->nb_lines_murs*METEORITE_REAL_SIZE-1400, 1800, 1800, 'z', 0);
world->air = init_sprite(world->air, -2000, -2000, 0, 0, 'x', 0);
world->coins = init_sprite(world->coins, SCREEN_WIDTH-40, 10, 30, 30, 'x', 0);
world->exit_shop = init_sprite(world->exit_shop, 670, 500, 100, 100, 'x', 0);
world->pgb = init_progressbarre(SCREEN_WIDTH-200, SCREEN_HEIGHT-30, 190, 20, 100/(INITIAL_SPEED+6)*world->speed_h);
world->vaisseauMini->y = SCREEN_HEIGHT - (110);
world->vaisseauMini->dy = SCREEN_HEIGHT - (110);
......@@ -65,7 +66,7 @@ void init_data(world_t * world){
world->coins_str = malloc(sizeof(char)*100); // Allocation de la mémoire pour le string coins
world->coins_str[0] = '\0';
world->coins_str = strcats(world->coins_str, 1, "0");
world->actualship = 0;
world->angle = 0.0;
world->isFlipping = 0;
......@@ -81,6 +82,23 @@ void init_data(world_t * world){
print_sprite(world->vaisseau);
}
void restart(world_t *world){
world->vaisseau->x = SCREEN_WIDTH/2 - SHIP_SIZE/2;
world->vaisseauMini->y = SCREEN_HEIGHT - (110);
world->vaisseauMini->dy = SCREEN_HEIGHT - (110);
world->ligneArriver->y = -world->nb_lines_murs*METEORITE_SIZE-30;
world->soleil->y = -world->nb_lines_murs*METEORITE_SIZE-1400;
world->nb_murs = 0;
world->speed_h = (float)INITIAL_SPEED;
free(world->murs);
init_walls(world);
world->angle = 0.0;
modify_str(world->coin_menu_str, int_to_str(world->money));
}
void outBorder(world_t *world){
if (isOverScreen(world->vaisseau)){
......@@ -114,12 +132,20 @@ void init_menu(world_t * world){
}
void init_shop(world_t * world){
world->ship1 = init_btn(74,145, 191, 139);
world->ship2 = init_btn(287,143, 191, 139);
world->ship3 = init_btn(491,138, 191, 139);
world->ship4 = init_btn(290,308, 191, 139);
world->ships = malloc(sizeof(btn_t*)*4);
world->ships[0] = init_btn(74,145, 191, 139);
world->ships[1] = init_btn(287,143, 191, 139);
world->ships[2] = init_btn(491,138, 191, 139);
world->ships[3] = init_btn(290,308, 191, 139);
world->exit_shp = init_btn(670,500,100,100);
world->vaisseau1 = init_sprite(world->vaisseau1, 140, 170, 60, 60, 0, 'z');
world->vaisseau2 = init_sprite(world->vaisseau2, 350, 170, 60, 60, 0, 'z');
world->vaisseau3 = init_sprite(world->vaisseau3, 560, 170, 60, 60, 0, 'z');
world->vaisseau4 = init_sprite(world->vaisseau4, 360, 340, 60, 60, 0, 'z');
world->Spr_ship = malloc(sizeof(sprite_t*)*4);
world->Spr_ship[0] = init_sprite(world->Spr_ship[0], 74,145, 191, 139, 'x', 0);
world->Spr_ship[1] = init_sprite(world->Spr_ship[1], 287,143, 191, 139, 'x', 0);
......@@ -127,25 +153,46 @@ void init_shop(world_t * world){
world->Spr_ship[3] = init_sprite(world->Spr_ship[3], 290,308, 191, 139, 'x', 0);
world->shopPrice = malloc(sizeof(int)*4);
world->shopPrice[0] = 200;
world->shopPrice[0] = 0;
world->shopPrice[1] = 500;
world->shopPrice[2] = 1000;
world->shopPrice[3] = 2000;
world->isBought = malloc(sizeof(bool)*4);
world->isBought[0] = true;
world->isBought[1] = false;
world->isBought[2] = false;
world->isBought[3] = false;
world->isSelected = malloc(sizeof(bool)*4);
world->isSelected[0] = true;
world->isSelected[1] = false;
world->isSelected[2] = false;
world->isSelected[3] = false;
}
void collide(sprite_t *sp1, sprite_t *sp2, world_t *world){
if (sprites_collide(sp1, sp2)){
printf("aaa: %s\n", sp2->id);
if (strcmp(sp2->id, "1") == 0){
world->gameover = 1;
world->gamestate = 1;
restart(world);
}else if(strcmp(sp2->id, "2") == 0){
if (world->isFlipping == 0){
world->isFlipping = 1;
}else if(world->isFlipping == -2){
world->isFlipping = -1;
switch (rand() % 3){
case 1:
if (world->isFlipping == 0){
world->isFlipping = 1;
}else if(world->isFlipping == -2){
world->isFlipping = -1;
}
break;
case 2:
world->money += 10;
break;
}
remove_wall(world, sp2->indice);
}else if(strcmp(sp2->id, "z") == 0){
world->gameover = 1;
world->gamestate = 1;
restart(world);
}else if(strcmp(sp2->id, "3") == 0){
world->money += 1;
remove_wall(world, sp2->indice);
......@@ -169,6 +216,7 @@ void flipScreen(world_t *world){
}
}
world->startTimer = SDL_GetTicks();
}
}
......@@ -217,8 +265,6 @@ void allEvents(world_t *world){
}
}
void clean_data(world_t *world){
/* utile uniquement si vous avez fait de l'allocation dynamique (malloc); la fonction ici doit permettre de libérer la mémoire (free) */
free(world->vaisseau);
......@@ -236,13 +282,38 @@ void clean_data(world_t *world){
free(world->exit);
free(world->magasin);
free(world->sound);
free(world->ship1);
free(world->ship2);
free(world->ship3);
free(world->ship4);
free(world->ships);
free(world->Spr_ship);
free(world->shopPrice);
free(world->coin_menu_str);
printf("clean_data");
}
progressBarre_t *init_progressbarre(int x, int y, int w, int h, int pourcent){
progressBarre_t *pgb;
pgb = malloc(sizeof(progressBarre_t));
pgb->Barre = malloc(sizeof(SDL_Rect));
pgb->Contours = malloc(sizeof(SDL_Rect));
pgb->Base = malloc(sizeof(SDL_Rect));
pgb->Barre->x = x;
pgb->Barre->y = y;
pgb->Barre->w = (int)(w*((float)pourcent/100.0));
pgb->Barre->h = h;
pgb->Contours->x = x-6;
pgb->Contours->y = y-6;
pgb->Contours->w = w+12;
pgb->Contours->h = h+12;
pgb->Base->x = x;
pgb->Base->y = y;
pgb->Base->w = w;
pgb->Base->h = h;
pgb->pourcent = pourcent;
return pgb;
}
void updateProgressBarre (progressBarre_t *pgb, int pourcent){
pgb->pourcent = pourcent;
pgb->Barre->w = (int)(pgb->Base->w*((float)pourcent/100.0));
}
\ No newline at end of file
......@@ -20,6 +20,15 @@
#ifndef WORLD_H
#define WORLD_H
struct progressBarre_s{
SDL_Rect* Barre;
SDL_Rect* Contours;
SDL_Rect* Base;
int pourcent;
};
typedef struct progressBarre_s progressBarre_t;
/**
* \brief La structure qui contient les données du monde
*
......@@ -39,15 +48,18 @@ struct world_s{
sprite_t **murs; /*<Représentation des météorites>*/
sprite_t **murs2; /*<Représentation des météorites et de l'air>*/
sprite_t *vaisseau1;
sprite_t *vaisseau2;
sprite_t *vaisseau3;
sprite_t *vaisseau4;
btn_t *play;
btn_t *exit;
btn_t *magasin;
btn_t *sound;
btn_t *ship1;
btn_t *ship2;
btn_t *ship3;
btn_t *ship4;
int actualship;
btn_t **ships;
btn_t *exit_shp;
sprite_t *BarreProgression;
......@@ -59,6 +71,9 @@ struct world_s{
sprite_t *exit_shop;
sprite_t **Spr_ship;
progressBarre_t* pgb;
bool *isBought;
bool *isSelected;
int *shopPrice;
int nb_murs; // Nombre de météorites
int nb_lines_murs; // Nombre de lignes de météorites
......@@ -190,4 +205,9 @@ void init_menu(world_t *world);
* @param world
*/
void init_shop(world_t * world);
progressBarre_t *init_progressbarre(int x, int y, int w, int h, int pourcent);
void updateProgressBarre (progressBarre_t *pgb, int pourcent);
#endif
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -13,6 +13,7 @@
#include "library/World/world.h"
#include "library/utility/utility.h"
#include "constante.c"
#include <time.h>
/**
......@@ -49,10 +50,20 @@ void handle_events(SDL_Event *event,world_t *world){
if (!world->gamestate){
switch (event->key.keysym.sym){
case SDLK_z:
world->speed_h = 4;
if (world->speed_h < INITIAL_SPEED+6){
world->speed_h += 1;
printf("%f\n", world->speed_h);
updateProgressBarre(world->pgb, 100.0/(float)(INITIAL_SPEED+6)*(world->speed_h));
}
break;
case SDLK_s:
world->speed_h = INITIAL_SPEED;
if (world->speed_h > INITIAL_SPEED){
world->speed_h -= 1;
updateProgressBarre(world->pgb, 100.0/(float)(INITIAL_SPEED+6)*(world->speed_h));
}
break;
case SDLK_ESCAPE:
world->gameover = 1;
......@@ -69,40 +80,39 @@ void handle_events(SDL_Event *event,world_t *world){
if (event->button.button == SDL_BUTTON_LEFT){
printf("mouse(%d, %d) world rect (%d %d %d %d)\n", world->mouseX, world->mouseY, world->play->rect.x,world->play->rect.y,world->play->rect.w,world->play->rect.h );
if (collidePoint(world->play, world->mouseX, world->mouseY)){
printf("tesy");
modify_str(world->coins_str, int_to_str(world->money));
world->gamestate = 0;
}
if (collidePoint(world->magasin, world->mouseX, world->mouseY)){
printf("tesy");
world->gamestate = 2;
}
if (collidePoint(world->exit, world->mouseX, world->mouseY)){
printf("tesy");
world->gameover = true;
}
}
}else if(world->gamestate == 2){
if (event->button.button == SDL_BUTTON_LEFT){
if (collidePoint(world->ship1, world->mouseX, world->mouseY)){
printf("ship1");
world->money -= world->shopPrice[0];
modify_str(world->coins_str, int_to_str(world->money));
printf("%s\n", world->coins_str);
}
if (collidePoint(world->ship2, world->mouseX, world->mouseY)){
printf("ship2");
world->money -= world->shopPrice[1];
modify_str(world->coins_str, int_to_str(world->money));
}
if (collidePoint(world->ship3, world->mouseX, world->mouseY)){
printf("ship3");
world->money -= world->shopPrice[2];
modify_str(world->coins_str, int_to_str(world->money));
}
if (collidePoint(world->ship4, world->mouseX, world->mouseY)){
printf("ship4");
world->money -= world->shopPrice[3];
modify_str(world->coins_str, int_to_str(world->money));
for (int i = 0; i < 4; i++){
if (collidePoint(world->ships[i], world->mouseX, world->mouseY)){
if (world->money - world->shopPrice[i] >= 0){
if (!world->isBought[i]){
world->money -= world->shopPrice[i];
modify_str(world->coin_menu_str, int_to_str(world->money));
world->isBought[i] = true;
}
}
if(world->isBought[i]){
for (int j = 0; j < 4; j++){
if (j != i){
world->isSelected[j] = false;
}else{
world->isSelected[j] = true;
world->actualship = j;
}
}
}
}
}
if (collidePoint(world->exit_shp, world->mouseX, world->mouseY)){
printf("exit");
......@@ -130,7 +140,7 @@ void handle_events(SDL_Event *event,world_t *world){
void init(SDL_Window **window, SDL_Renderer ** renderer, ressources_t *textures, world_t * world){
init_sdl(window,renderer,SCREEN_WIDTH, SCREEN_HEIGHT);
srand(time(0));
init_data(world);
// Initialisation du ttf
init_ttf();
......@@ -155,9 +165,10 @@ int main( int argc, char* args[] )
Uint32 ticks = SDL_GetTicks();
Uint32 frameTime = 0;
//initialisation du jeu
init(&window,&renderer,&textures,&world);
while(!is_game_over(&world)){ //tant que le jeu n'est pas fini
frameTime = SDL_GetTicks() - ticks;
//gestion des évènements
......@@ -165,6 +176,7 @@ int main( int argc, char* args[] )
//mise à jour des données liée à la physique du monde
update_data(&world);
//rafraichissement de l'écran
refresh_graphics(renderer,&world,&textures);
......
No preview for this file type
ressources/Elements/e_rotate.png

11.9 KiB

ressources/Elements/shop/selected.png

4.55 KiB

No preview for this file type
No preview for this file type
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment