Skip to content
Snippets Groups Projects
Commit 0ceebe9d authored by Montjoie Henri's avatar Montjoie Henri
Browse files

menage+correction d'un oubli

parent c4c4c47f
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -59,17 +59,14 @@
<Option compilerVar="CC" />
</Unit>
<Unit filename="../src/TerrainsXML.h" />
<Unit filename="../src/affichage.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../src/affichage.h" />
<Unit filename="../src/attaques.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../src/attaques.h" />
<Unit filename="../src/carte.c">
<Option compilerVar="CC" />
</Unit>
......@@ -90,10 +87,6 @@
<Option compilerVar="CC" />
</Unit>
<Unit filename="../src/controleur.h" />
<Unit filename="../src/controleurSDL.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../src/controleurSDL.h" />
<Unit filename="../src/deplacements.c">
<Option compilerVar="CC" />
</Unit>
......
......@@ -5,7 +5,6 @@
#include "affichage.h"
#include "controleur.h"
#include "controleurSDL.h"
/*!
* \file affichage.c
......@@ -65,6 +64,13 @@ int main_affichage()
return 0;
}
/*!
* \fn int perso_suivant(int numPerso)
* \brief permet de changer de personnage
*
* \param le numro du personnage actuel (1,2, ou 3 pour le 1er joueur, 4,5, ou 6 pour le 2eme)
* \return le numro du personnage suivant (respectivement 2,3,1 et 5,6,4)
*/
int perso_suivant(int numPerso)
{
if (numPerso==NB_PERSO) numPerso=1;
......@@ -73,6 +79,13 @@ int perso_suivant(int numPerso)
return numPerso;
}
/*!
* \fn int actualiser_num_perso(int numPerso)
* \brief permet de changer le personnage actuel lorsqu'on change de joueur
*
* \param le numro du personnage actuel (1,2,3 pour le 1er joueur, 4,5,6 pour le 2eme)
* \return le numro du 1er personnage du joueur suivant (4 ou 1)
*/
int actualiser_num_perso(int numPerso)
{
if (numPerso<=NB_PERSO) numPerso=NB_PERSO+1;
......@@ -153,13 +166,13 @@ int afficher_cartes_personnalisees()
/*!
* \fn char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
* \fn char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix)
* \brief Fonction permettant le choix de la classe d'un personnage par le joueur
*
* \param le tableau contenant les noms des classes, le tableau contenant les adresses de leurs images, le nombre de classes, et la police et la couleur dans lesquelles crire les noms
* \param le tableau contenant les noms des classes, le tableau contenant les adresses de leurs images, et le nombre de classes
* \return le nom de la classe choisie (ou "fermer" si l'utilisateur ferme la fenetre)
*/
char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix)
{
int i, quitter;
char* classeChoisie;
......@@ -170,6 +183,8 @@ char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix,
SDL_Rect positionsTextes[nbChoix];
SDL_Rect positionsSkins[nbChoix];
SDL_Color couleurNoire = {0, 0, 0};
SDL_Color couleurTexte = {255,255,255};
TTF_Font* police = TTF_OpenFont("../resources/fonts/arial.ttf",26);
for(i=0; i<nbChoix; i++)
{
......@@ -226,6 +241,7 @@ char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix,
SDL_FreeSurface(tabSkins[i]);
}
SDL_FreeSurface(fenetre);
TTF_CloseFont(police);
return classeChoisie;
}
......@@ -581,7 +597,7 @@ int affichage_menu_configuration()
}
if(j!=0&&p!=0)
{
classeChoisie=afficherListeClasses(obtenirNomsClasses(), obtenirSkinsClasses(), nombre_classes, police, couleurBlanche);
classeChoisie=afficherListeClasses(obtenirNomsClasses(), obtenirSkinsClasses(), nombre_classes);
if(classeChoisie!="fermer")
{
numClassePerso[p-1][j-1]=ajouterPersonnage(classeChoisie, p-1, j);
......@@ -805,7 +821,7 @@ int affichage_carte()
etat=FERMER;
break;
case SDL_MOUSEBUTTONDOWN:
if(event.button.y>pos_bouton1.y&&event.button.y<pos_bouton1.y+bouton1->h)
if(event.button.y>pos_bouton1.y&&event.button.y<pos_bouton1.y+bouton1->h&&event.button.x>LARGEUR_CARTE*LARGEUR_CASE)
{
perso_actuel=perso_suivant(perso_actuel);
sprintf(buffer_PV, "PV: %d/%d", obtenirPVPersonnage(perso_actuel),obtenirPVMaxPersonnage(perso_actuel));
......@@ -829,7 +845,7 @@ int affichage_carte()
}
SDL_SetColorKey( perso[perso_actuel], SDL_SRCCOLORKEY, SDL_MapRGB( perso[perso_actuel]->format, 0, 0, 255));
}
if(event.button.y>pos_bouton2.y&&event.button.y<pos_bouton2.y+bouton2->h)
if(event.button.y>pos_bouton2.y&&event.button.y<pos_bouton2.y+bouton2->h&&event.button.x>LARGEUR_CARTE*LARGEUR_CASE)
{
finDuTour();
debutDuTour();
......
......@@ -2,8 +2,6 @@
* \file affichage.h
* \brief Fichier contenant les signatures des fonctions liees a l'affichage par SDL.
*/
#ifndef SDL_H_INCLUDED
#define SDL_H_INCLUDED
......@@ -19,6 +17,12 @@
int main_affichage();
int perso_suivant(int numPerso);
int actualiser_num_perso(int numPerso);
int afficher_cartes_personnalisees();
char* afficherListeClasses(char** nomsClasses, char** skinsClasses, int nbChoix);
int saisie_noms_joueurs();
int affichage_menu_configuration();
......@@ -29,6 +33,40 @@ int affichage_carte();
int afficher_menu();
int afficher_cartes_personnalisees();
/*! \enum EtatsJeu
* \brief Definition du type EtatsJeu.
*/
/*
* Les états du jeu sont basés sur le scénarion définit dans la documentation.
* Il y en a éventuellement à ajouter ou à supprimer.
* Je pense notament aux états JxPy attaque ou deplacement.
* Il me semble que c'est un état différent à chaque fois, mais peut être qu'on peut
* tout réunir dans l'état TOUR_JxPy. Dites moi ce que vous en pensez.
* En tout cas les premiers états jusqu'à CONFIGURATION devraient permettre de rendre la V2.
*/
typedef enum {SAISIE_JOUEURS,
LANCEMENT,
CONFIGURATION,
TOUR_J1P1,
J1P1_DEPLACEMENT,
J1P1_ATTAQUE,
TOUR_J1P2,
J1P2_DEPLACEMENT,
J1P2_ATTAQUE,
TOUR_J1P3,
J1P3_DEPLACEMENT,
J1P3_ATTAQUE,
TOUR_J2P1,
J2P1_DEPLACEMENT,
J2P1_ATTAQUE,
TOUR_J2P2,
J2P2_DEPLACEMENT,
J2P2_ATTAQUE,
TOUR_J2P3,
J2P3_DEPLACEMENT,
J2P3_ATTAQUE,
VICTOIRE,
FERMER
}EtatsJeu;
#endif
......@@ -16,8 +16,6 @@
#include "classe.h"
#include "gamePackage.h"
#include "roxml.h"
#include "affichage.h"
#include "structures.h"
Partie * partieGlobale;
Game_Package packGlobal;
......@@ -54,6 +52,40 @@ void initJeu(){
}
}
/*!
* \fn int x_case_cliquee(int x_pixel, int y_pixel)
* \brief La fonction retourne la colonne d'une case à partir de sa position en pixels
*
* \param les coordonnées x et y de la case en pixels
* \return la colonne de la case
*/
int x_case_cliquee(int x_pixel, int y_pixel)
{
return x_pixel/LARGEUR_CASE;
}
/*!
* \fn int y_case_cliquee(int x_pixel, int y_pixel)
* \brief La fonction retourne la ligne d'une case à partir de sa position en pixels
*
* \param les coordonnées x et y de la case en pixels
* \return la ligne de la case
*/
int y_case_cliquee(int x_pixel, int y_pixel)
{
int i, x_case, y_case;
x_case = x_pixel/LARGEUR_CASE;
y_case = y_pixel/HAUTEUR_CASE;
for(i=1;i<LARGEUR_CARTE;i+=2)
{
if(x_case==i)
{
y_case=(y_pixel-HAUTEUR_CASE/2)/HAUTEUR_CASE;
}
}
return y_case;
}
/*!
* \fn int nbClasses()
* \brief Fonction renvoyer le nombre de classes contenues dans le package du jeu
......@@ -109,19 +141,6 @@ void initJeu(){
return tabSkinsClasses;
}
char ** obtenirSkinsTerrains(){
int i;
//Allocation du tableau contenant les chaines de charactères
char ** tabSkinsTerrains = malloc((getNbTerrains(packGlobal))*sizeof(char *));
for(i=0;i<getNbTerrains(packGlobal);i++){
tabSkinsTerrains[i]= malloc(TAILLE_CHEMIN*sizeof(char));
}
//Copie des chemin des skins dans le tableau
for(i=0;i<getNbTerrains(packGlobal);i++){
strncpy(tabSkinsTerrains[i],packGlobal.Terrains_Package[i].skin_default, TAILLE_CHEMIN);
}
return tabSkinsTerrains;
}
/*!
* \fn void freeClasses()
......@@ -169,18 +188,6 @@ char ** obtenirNomsCartes(){
return tabNomsCartes;
}
/*!
* \fn char ** obtenirLignesCarte(int numCarte)
* \brief Fonction renvoyant le tableau des lignes de la carte numéro numCarte
*
* \return un tableau de chaine de charactères (char**).
*/
char ** obtenirLignesCarte(int numCarte){
return packGlobal.Cartes_Package[numCarte-1].lignes;
}
/*!
* \fn char ** obtenirDescriptionCarte()
* \brief Fonction renvoyant un tableau de chaine de caractères contenant les descriptions des Cartes.
......
......@@ -4,23 +4,24 @@
*/
#include "structures.h"
#include "affichage.h"
#ifndef CONTROLEUR_H
#define CONTROLEUR_H
void initJeu();
char ** obtenirSkinsTerrains();
char ** obtenirLignesCarte(int numCarte);
void ajouterUnJoueur(char * nomDuJoueur, EtatsJeu * etat);
int y_case_cliquee(int x_pixel, int y_pixel);
int x_case_cliquee(int x_pixel, int y_pixel);
int nbClasses();
char ** obtenirNomsClasses();
char ** obtenirSkinsClasses();
void freeClasses(char ** tab);
int nbCartes();
int nbCartes();
char ** obtenirNomsCartes();
char ** obtenirDescriptionCarte();
void freeCartes(char **);
......
#include <stdlib.h>
#include <SDL/SDL.h>
#include "structures.h"
#include "partie.h"
#include "joueur.h"
#include "joueurList.h"
#include "personnage.h"
#include "case.h"
#include "deplacements.h"
#include "affichage.h"
#include "controleurSDL.h"
#include "controleur.h"
/*!
* \file controleurSDL.c
* \brief Fichier contenant le code des fonctions du controleur pour l'affichage avec SDL
*/
/*!
* \fn int x_case_cliquee(int x_pixel, int y_pixel)
* \brief La fonction retourne la colonne d'une case à partir de sa position en pixels
*
* \param les coordonnées x et y de la case en pixels
* \return la colonne de la case
*/
int x_case_cliquee(int x_pixel, int y_pixel)
{
return x_pixel/LARGEUR_CASE;
}
/*!
* \fn int y_case_cliquee(int x_pixel, int y_pixel)
* \brief La fonction retourne la ligne d'une case à partir de sa position en pixels
*
* \param les coordonnées x et y de la case en pixels
* \return la ligne de la case
*/
int y_case_cliquee(int x_pixel, int y_pixel)
{
int i, x_case, y_case;
x_case = x_pixel/LARGEUR_CASE;
y_case = y_pixel/HAUTEUR_CASE;
for(i=1;i<LARGEUR_CARTE;i+=2)
{
if(x_case==i)
{
y_case=(y_pixel-HAUTEUR_CASE/2)/HAUTEUR_CASE;
}
}
return y_case;
}
/*!
* \file controleurSDL.h
* \brief Fichier contenant les signatures des fonctions du controleur pour l'affichage avec SDL.
*/
#ifndef CONTROLEUR_SDL_H_INCLUDED
#define CONTROLEUR_SDL_H_INCLUDED
int y_case_cliquee(int x_pixel, int y_pixel);
int x_case_cliquee(int x_pixel, int y_pixel);
void deplacement_personnage(int x, int y);
Case* get_case_perso(int num);
int get_position_perso_x(int num);
int get_position_perso_y(int num);
void init_controleur();
Case* deplacement_brillance(int x,int y);
int get_position_case_y(Case * Case);
int get_position_case_x(Case * Case);
void persosuivant();
int persoactuel();
#endif
......@@ -44,42 +44,6 @@
*/
typedef enum {faux, vrai} boolean;
/*! \enum boolean
* \brief Definition du type EtatsJeu.
*/
/*
* Les états du jeu sont basés sur le scénarion définit dans la documentation.
* Il y en a éventuellement à ajouter ou à supprimer.
* Je pense notament aux états JxPy attaque ou deplacement.
* Il me semble que c'est un état différent à chaque fois, mais peut être qu'on peut
* tout réunir dans l'état TOUR_JxPy. Dites moi ce que vous en pensez.
* En tout cas les premiers états jusqu'à CONFIGURATION devraient permettre de rendre la V2.
*/
typedef enum {SAISIE_JOUEURS,
LANCEMENT,
CONFIGURATION,
TOUR_J1P1,
J1P1_DEPLACEMENT,
J1P1_ATTAQUE,
TOUR_J1P2,
J1P2_DEPLACEMENT,
J1P2_ATTAQUE,
TOUR_J1P3,
J1P3_DEPLACEMENT,
J1P3_ATTAQUE,
TOUR_J2P1,
J2P1_DEPLACEMENT,
J2P1_ATTAQUE,
TOUR_J2P2,
J2P2_DEPLACEMENT,
J2P2_ATTAQUE,
TOUR_J2P3,
J2P3_DEPLACEMENT,
J2P3_ATTAQUE,
VICTOIRE,
FERMER
}EtatsJeu;
/*! \struct Skins_Charac structures.h
* \brief Definition de la structure Skins_Charac
* sizeof(Skins_Charac) = 200 octets
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment