diff --git a/Makefile b/Makefile index 111d09b9a647f52029fb794d541a4af04e910369..7d92f84b231b2e49011862d770d61ff9edece1eb 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ LIBS = -L /SDL2_ttf/.libs -L /SDL2_image/.libs LDFLAGS = `sdl2-config --cflags --libs` INCLUDES = -I ./SDL2_ttf -I ./SDL2_image EXEC = main -SRC = main.c player.c map.c textures.c +SRC = main.c player.c map.c textures.c data.c OBJ = $(SRC:.c=.o) all: $(EXEC) diff --git a/data.c b/data.c index 3357bf80c7269352db0327f862cb49edcd8da5a8..7ceb10d5f405eb20dfc5147c922c3e1fc1b85c8a 100644 --- a/data.c +++ b/data.c @@ -1,12 +1,5 @@ #include "data.h" -base_t* init_base(player_t* player,int px,int py,int postx,int posty){ - base_t* base= malloc(sizeof(base_t)); - base->gameover=0; - base->chances=3; - base->player=player; - base->wall=init_wall(px,py,postx,posty); -} walls_t* init_wall(int px,int py,int postx,int posty){ walls_t* walls= malloc(sizeof(walls_t)); walls->bricks.w=BRICKW; @@ -17,5 +10,5 @@ walls_t* init_wall(int px,int py,int postx,int posty){ walls->Src.y=BRICKH*py; walls->Src.w=BRICKW; walls->Src.h=BRICKH; -} -//void gameOver(char** tab,int nbl,int nbc,base_t* base); + return walls; +} \ No newline at end of file diff --git a/data.h b/data.h index 7d786448ba207b6cd6c45b559cc3aca6d857c67f..bf755b22674d5cf93add5eae9f03ee9670414002 100644 --- a/data.h +++ b/data.h @@ -12,19 +12,10 @@ typedef struct walls_s { SDL_Rect bricks; SDL_Rect Src; + SDL_Texture* texture; }walls_t; -typedef struct base_s -{ - walls_t* wall; - player_t* player; - int gameover; - int chances; - -}base_t; -base_t* init_base(player_t* player,int px,int py,int postx,int posty); walls_t* init_wall(int px,int py,int postx,int posty); -void gameOver(char** tab,int nbl,int nbc,base_t* base); #endif \ No newline at end of file diff --git a/data.o b/data.o new file mode 100644 index 0000000000000000000000000000000000000000..c3d9e8eb6c42ee6f4a9633cad815151659319c94 Binary files /dev/null and b/data.o differ diff --git a/fonctions_SDL.c b/fonctions_SDL.c deleted file mode 100644 index 64ca2a792c05af2e650a9393c0ee18abf7e2d412..0000000000000000000000000000000000000000 --- a/fonctions_SDL.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "fonctions_SDL.h" - -SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer) -{ - SDL_Surface *img = SDL_LoadBMP(nomfichier); - SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, img); - // Libérer une surface - SDL_FreeSurface(img); - return texture; -} - diff --git a/fonctions_SDL.h b/fonctions_SDL.h deleted file mode 100644 index 566f6e222a850dbfbd75765ee3efbf6aba1c9a3f..0000000000000000000000000000000000000000 --- a/fonctions_SDL.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef FONCTIONS_SDL_H -#define FONCTIONS_SDL_H - -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> -#include <SDL2/SDL.h> - - -SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer); - -#endif diff --git a/main b/main index 740ba5eea2b2ecca9bda35580b7975865a2076ca..b21f89a0c997f3903bb15d701406f27fef76937d 100644 Binary files a/main and b/main differ diff --git a/main.c b/main.c index 1956978d1484371bd5ab7735fb54cf919f248196..f632906bd014abb3e38fca98e900995e63b8b907 100644 --- a/main.c +++ b/main.c @@ -6,10 +6,10 @@ int main() int nbc = 0; char** map =lire_map("ressources/maze_map.txt"); taille_map("ressources/maze_map.txt",&nbl,&nbc); - player_t*player = init_player(32,32); + player_t*player = init_player(1,1); SDL_Window* fenetre; // Déclaration de la fenêtre - bool terminer = false; - + walls_t* walls; + bool terminer=false; if(SDL_Init(SDL_INIT_VIDEO) < 0) // Initialisation de la SDL { printf("Erreur d’initialisation de la SDL: %s",SDL_GetError()); @@ -30,22 +30,8 @@ int main() ecran = SDL_CreateRenderer(fenetre, -1, SDL_RENDERER_ACCELERATED); // Charger l’images SDL_Texture* sprite= charger_image("ressources/pavage.bmp",ecran); - //player->texture = charger_image("ressources/personnage1.bmp",ecran); - - int width; - int height; - int widthP; - int heightP; - Uint32 format; - int access; - int accessP; - Uint32 formatP; - SDL_QueryTexture(sprite,&format,&access,&width,&height); - //SDL_QueryTexture(player->texture,&formatP,&accessP,&widthP,&heightP); - height=height/10; - width=width/16; - widthP=widthP/6; - SDL_Event event; + player->texture= charger_image("ressources/personnage.bmp",ecran); + SDL_Event event; // Boucle principale while(!terminer){ while (SDL_PollEvent(&event)){ @@ -60,73 +46,43 @@ int main() } if(event.key.keysym.sym == SDLK_LEFT){ movement(map,player,'q'); // fléche vers la gauche - } + change_movement_player(player,1,1); + } if(event.key.keysym.sym == SDLK_RIGHT){ movement(map,player,'d'); // fléche vers la droite - } + change_movement_player(player,1,2); + } if(event.key.keysym.sym == SDLK_UP){ movement(map,player,'z');// fléche vers le haut + change_movement_player(player,1,3); } if(event.key.keysym.sym == SDLK_DOWN){ movement(map,player,'s');// fléche vers le bas - } + change_movement_player(player,1,0); + } } } SDL_RenderClear(ecran); - SDL_Rect DestR[160]; - SDL_Rect DestR_P[6]; - SDL_Rect Src; for (int i=0;i<nbl;i++){ for (int j = 0; j< nbc; j++) { if(map[i][j]=='L'){ - DestR[i].x=8*width; - DestR[i].y=3*height; - DestR[i].w=width; - DestR[i].h=height; - Src.x=width*j; - Src.y=height*i; - Src.w=width; - Src.h=height; - SDL_RenderCopy(ecran,sprite,&DestR[i],&Src); + walls=init_wall(j,i,9,3); + SDL_RenderCopy(ecran,sprite,&(walls->bricks),&(walls->Src)); } else if(map[i][j]=='#'){ - DestR[i].x=9*width; - DestR[i].y=3*height; - DestR[i].w=width; - DestR[i].h=height; - Src.x=width*j; - Src.y=height*i; - Src.w=width; - Src.h=height; - SDL_RenderCopy(ecran,sprite,&DestR[i],&Src); - + walls=init_wall(j,i,10,3); + SDL_RenderCopy(ecran,sprite,&(walls->bricks),&(walls->Src)); } else if (map[i][j]=='S'){ - DestR[i].x=13*width; - DestR[i].y=3*height; - DestR[i].w=width; - DestR[i].h=height; - Src.x=width*j; - Src.y=height*i; - Src.w=width; - Src.h=height; - SDL_RenderCopy(ecran,sprite,&DestR[i],&Src); - + walls=init_wall(j,i,13,3); + SDL_RenderCopy(ecran,sprite,&(walls->bricks),&(walls->Src)); } } } - DestR_P[player->y].x=1*widthP; - DestR_P[player->y].y=0; - DestR_P[player->y].w=widthP; - DestR_P[player->y].h=heightP; - Src.x=widthP*player->x; - Src.y=heightP*player->y; - Src.w=widthP; - Src.h=heightP; - //SDL_RenderCopy(ecran,player->texture,&DestR_P[player->y],&Src); + SDL_RenderCopy(ecran,player->texture,&(player->DestR),&(player->Src)); SDL_RenderPresent(ecran); SDL_UpdateWindowSurface(fenetre); } diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..08c29c80ae1ab08815cefa7486f4e5fa6340075c Binary files /dev/null and b/main.o differ diff --git a/map.o b/map.o new file mode 100644 index 0000000000000000000000000000000000000000..d34eb32d16bdece090fccb4237a5d13e1fe5c84d Binary files /dev/null and b/map.o differ diff --git a/player.c b/player.c index 028b3377ac28c1c1c78f83209e133185830cdb94..71826ed445438a3db62bc020c3381e67ec542494 100644 --- a/player.c +++ b/player.c @@ -15,17 +15,24 @@ player_t* init_player(int posc,int posl){ player->Src.h=PLAYERH; player->Src.x=PLAYERW*player->x; player->Src.y=PLAYERH*player->y; + player->lives=3; + player->gameover=0; return player; } void change_movement_player(player_t* player,int posc,int posl){ + player->DestR.h=PLAYERH; + player->DestR.w=PLAYERW; player->DestR.x=PLAYERW*posc; player->DestR.y=PLAYERH*posl; + player->Src.w=PLAYERW; + player->Src.h=PLAYERH; + player->Src.x=PLAYERW*player->x; + player->Src.y=PLAYERH*player->y; } -/* -void gameOver(char** tab,int nbl,int nbc,player_t* player){ +void gamrover(player_t* player,char** tab, int nbc,int nbl){ for (int i = 0; i<nbl ; i++) { for (int j = 0; j<nbc; j++) @@ -38,7 +45,7 @@ void gameOver(char** tab,int nbl,int nbc,player_t* player){ } } } -*/ + bool handle_movement_up(char** tab,player_t*player) { if (tab[player->y-1][player->x]=='L'|| tab[player->y-1][player->x]=='S'){ diff --git a/player.h b/player.h index ff7ac83ba49c0c262ea4acb19b48b0d2593ea467..bc074458eb9b38a2264378826846d96f1e52d89d 100644 --- a/player.h +++ b/player.h @@ -14,7 +14,10 @@ typedef struct player_s int score; SDL_Rect DestR; SDL_Rect Src; + SDL_Texture* texture; int speed; + int lives; + int gameover; }player_t; player_t* init_player(int posc,int posl); @@ -24,6 +27,7 @@ bool handle_movement_down(char** tab,player_t*player); bool handle_movement_left(char** tab,player_t*player); bool handle_movement_right(char** tab,player_t*player); void movement(char** tab,player_t *player,char deplacement); +void gamrover(player_t* player,char** tab, int nbc,int nbl); void free_player(player_t* player); #endif \ No newline at end of file diff --git a/player.o b/player.o new file mode 100644 index 0000000000000000000000000000000000000000..eead894fb1f0bd998a24149d7b64fb7cd399147e Binary files /dev/null and b/player.o differ diff --git a/ressources/personnage.bmp b/ressources/personnage.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e9617918c5d5e3106d1a790944abc9234906435f Binary files /dev/null and b/ressources/personnage.bmp differ diff --git a/ressources/personnage1.bmp b/ressources/personnage1.bmp deleted file mode 100644 index 6129c4cfb40ae3ab69ec03729c387f57cdd66fc4..0000000000000000000000000000000000000000 Binary files a/ressources/personnage1.bmp and /dev/null differ diff --git a/textures.o b/textures.o new file mode 100644 index 0000000000000000000000000000000000000000..d2b5a1172fb8c4b8082578fb8d75347cd2fe8c8d Binary files /dev/null and b/textures.o differ