From 843719b4338ca9d4681f7ebd995695e518abb5de Mon Sep 17 00:00:00 2001 From: JackCarterSmith Date: Mon, 25 Jun 2018 16:35:37 +0200 Subject: [PATCH] Fixed grass move bug and cleaned code --- src/arenaEngine.c | 6 ++-- src/arenaEngine.h | 2 +- src/arenaGUI.c | 75 +++++++++++++++++------------------------------ src/main.c | 9 +----- 4 files changed, 32 insertions(+), 60 deletions(-) diff --git a/src/arenaEngine.c b/src/arenaEngine.c index 98bb892..29deb8b 100644 --- a/src/arenaEngine.c +++ b/src/arenaEngine.c @@ -557,11 +557,11 @@ int NumberPlayerAlive(PLAYER *Head) return numberAlive; } -int getRelativeDirection(int pos1_x, int pos1_y, int pos2_x, int pos2_y) { +int getRelativeDirection(SDL_Rect pos1, SDL_Rect pos2) { int _x,_y; - _x = pos2_x - pos1_x; - _y = pos2_y - pos1_y; + _x = pos2.x - pos1.x; + _y = pos2.y - pos1.y; if (_x>0) { return DOWN; diff --git a/src/arenaEngine.h b/src/arenaEngine.h index fa8be5f..7e37f08 100644 --- a/src/arenaEngine.h +++ b/src/arenaEngine.h @@ -67,7 +67,7 @@ int isGroundTile(TILE *t_list, int id); SDL_Surface *getTileSurfaceFromID(TILE *t_list, int id); int isPlayerAdjacent(PLAYER* p1, PLAYER* p2); int isMoveCorrect(ARENA_H_TILE* arena, TILE *t_list, int coord_x, int coord_y, int direction); -int getRelativeDirection(int pos1_x, int pos1_y, int pos2_x, int pos2_y); +int getRelativeDirection(SDL_Rect pos1, SDL_Rect pos2); int NumberPlayerAlive(PLAYER *Head); void AttackPlayer(PLAYER *player1, PLAYER *player2); diff --git a/src/arenaGUI.c b/src/arenaGUI.c index ee6d60d..12a6d72 100644 --- a/src/arenaGUI.c +++ b/src/arenaGUI.c @@ -26,8 +26,7 @@ int updateArena(SDL_Window* window, ARENA_H_TILE* arena, TILE *tiles, PLAYER *pl PLAYER *p1=NULL,*p2=NULL; - p1=player; - p2=player->suiv; + p1=player;p2=player->suiv; printf("Nom player 1 : %s\n",p1->Name); printf("Nom player 2 : %s\n",p2->Name); @@ -36,64 +35,49 @@ int updateArena(SDL_Window* window, ARENA_H_TILE* arena, TILE *tiles, PLAYER *pl int action=0,actionIA=0; + //Affichage des joueurs au début de la partie + position.x = p1->PositionX * TILE_SIZE; + position.y = p1->PositionY * TILE_SIZE; + SDL_BlitSurface(p1->texture[DOWN], NULL, SDL_GetWindowSurface(window), &position); + + IAposition.x = p2->PositionX * TILE_SIZE; + IAposition.y = p2->PositionY * TILE_SIZE; + SDL_BlitSurface(p2->texture[DOWN], NULL, SDL_GetWindowSurface(window), &IAposition); + + SDL_UpdateWindowSurface(window); do { oldposition.x = p1->PositionX * TILE_SIZE; oldposition.y = p1->PositionY * TILE_SIZE; oldIAposition.x = p2->PositionX * TILE_SIZE; oldIAposition.y = p2->PositionY * TILE_SIZE; - - //Affichage des joueurs au début de la partie - SDL_BlitSurface(p1->texture[DOWN], NULL, SDL_GetWindowSurface(window), &position); - SDL_BlitSurface(p2->texture[DOWN], NULL, SDL_GetWindowSurface(window), &IAposition); - - SDL_UpdateWindowSurface(window); - - while(action == 0) - { + while(action == 0) { action=getKeyEvent(); } - if(action == -1) - { + if(action == -1){ return -1; - } - else if(action == 1) - { + } else if(action == 1) { ActionPlayer(arena,tiles,p1,1); //Déplacement vers le haut - } - else if(action == 2) - { + } else if(action == 2) { ActionPlayer(arena,tiles,p1,2); //Déplacement vers la droite - } - else if(action == 3) - { + } else if(action == 3) { ActionPlayer(arena,tiles,p1,3); //Déplacement vers le bas - } - else if(action == 4) - { + } else if(action == 4) { ActionPlayer(arena,tiles,p1,4); //Déplacement vers la gauche - } - else if(action == 5) - { + } else if(action == 5) { //Regarder le perso en face, le plus près AttackPlayer(p1,p2); //Voir quel player on choisit d'attaquer } - - //Partie ajoutée - // On place le joueur à la bonne position + // On place le joueur à la bonne position position.x = p1->PositionX * TILE_SIZE; position.y = p1->PositionY * TILE_SIZE; - //SDL_BlitSurface(actualPlayer, NULL, SDL_GetWindowSurface(window), &position); - - // Effacement de l'écran - //SDL_FillRect(SDL_GetWindowSurface(window), NULL, SDL_MapRGB(SDL_GetWindowSurface(window)->format, 255, 255, 255)); //SDL_BlitSurface(p1->texture[getRelativeDirection(oldposition, position)], NULL, SDL_GetWindowSurface(window), &position); + SDL_BlitSurface(getTileSurfaceFromID(tiles,getTileTypeID(arena,(oldposition.x)/TILE_SIZE,(oldposition.y)/TILE_SIZE)), NULL, SDL_GetWindowSurface(window), &oldposition); SDL_BlitSurface(p1->texture[DOWN], NULL, SDL_GetWindowSurface(window), &position); - SDL_BlitSurface(getTileSurfaceFromID(tiles,getTileTypeID(arena,oldposition.x,oldposition.y)), NULL, SDL_GetWindowSurface(window), &oldposition); @@ -113,28 +97,25 @@ int updateArena(SDL_Window* window, ARENA_H_TILE* arena, TILE *tiles, PLAYER *pl IAposition.y = p2->PositionY * TILE_SIZE; //SDL_BlitSurface(p2->texture[getRelativeDirection(oldIAposition, IAposition)], NULL, SDL_GetWindowSurface(window), &IAposition); + SDL_BlitSurface(getTileSurfaceFromID(tiles,getTileTypeID(arena,(oldIAposition.x)/TILE_SIZE,(oldIAposition.y)/TILE_SIZE)), NULL, SDL_GetWindowSurface(window), &oldIAposition); SDL_BlitSurface(p2->texture[DOWN], NULL, SDL_GetWindowSurface(window), &IAposition); - SDL_BlitSurface(getTileSurfaceFromID(tiles,getTileTypeID(arena,oldIAposition.x,oldIAposition.y)), NULL, SDL_GetWindowSurface(window), &oldIAposition); SDL_UpdateWindowSurface(window); action=0;actionIA=0; - } while((p1->HealthPoints >0) && (NumberPlayerAlive(player) > 1)); + } while((p1->HealthPoints > 0) && (NumberPlayerAlive(player) > 1)); printf("La partie est terminée\n"); - if(p1->HealthPoints > 0) - { + if(p1->HealthPoints > 0){ printf("Vous avez gagné\n"); - } - else - { + } else { printf("Vous avez perdu\n"); } //Si une des IA meurt, voir comment on le gère - return -1; + return 0; } int getKeyEvent() @@ -142,15 +123,13 @@ int getKeyEvent() SDL_Event event; SDL_WaitEvent(&event); /* Récupération de l'événement dans event */ - switch(event.type) /* Test du type d'événement */ - { + switch(event.type) { /* Test du type d'événement */ /* Si c'est un événement de type "Quitter" */ case SDL_QUIT : printf("QUITTER\n"); return -1; case SDL_KEYUP: - switch(event.key.keysym.sym) //La valeur de touche - { + switch(event.key.keysym.sym) { //La valeur de touche case SDLK_UP: printf("FLECHE DU HAUT\n"); return 1; diff --git a/src/main.c b/src/main.c index 9e26d47..6782413 100644 --- a/src/main.c +++ b/src/main.c @@ -54,14 +54,7 @@ int main(int argc, char *argv[]) { addLogInfo("Display arena GUI..."); displayArena(arena, gameWindows, tile_ressources, A_HEIGHT, A_WIDTH, TILE_SIZE); - int continuer = 1; - int action; - - while (continuer) { - action = updateArena(gameWindows,arena,tile_ressources,player_ressources); - - if (action == -1) continuer = 0; - } + while (updateArena(gameWindows,arena,tile_ressources,player_ressources)!=0) {} SDL_DestroyWindow(gameWindows); deleteArena(arena);