Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
changement documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
william-billaud committed Apr 16, 2017
1 parent 57d0787 commit 6bd1a1d
Show file tree
Hide file tree
Showing 10 changed files with 244 additions and 230 deletions.
56 changes: 28 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Réalisation du jeu stratopolis en tant que projet étudiant pour l'ISEN Toulon

## Le jeu

####généralités
#### généralités
*Stratopolis* :
Dans ce jeu créé par _Annick Lobet_, chaque tour sera déterminant. Choisirez-vous
d'agrandir votre territoire, de lui faire prendre de la hauteur ou de contrer l'expansion
Expand All @@ -13,65 +13,65 @@ leur couleur. Le score prend en compte la plus grande surface et la plus grande
de cette surface. Les tuiles s'empilent et un territoire risque d'être divisé à tout moment par
l'adversaire: jusqu'au dernier coup la victoire peut basculer

####les règles
#### les règles
lien vers [les règles](https://cloud-toulon.isen.fr/d/0d68030fad/files/?p=/Stratopolis/GIGAMIC_STRATOPOLIS_RULES-FR.pdf&dl=1) du jeu ( en français)
####revue de presse
une [review](https://cloud-toulon.isen.fr/d/0d68030fad/files/?p=/Stratopolis/Stratopolis_Review_-_with_Tom_and_Melody_Vasel.mp4&dl=1) avec Tom et Melody Vasel (en anglais) \n
un [tutoriel](https://cloud-toulon.isen.fr/d/0d68030fad/files/?p=/Stratopolis/Tutorial_-_Stratopolis.mp4&dl=1) (en espagnol) \n
Quelques [avis](https://www.trictrac.net/jeu-de-societe/stratopolis)
#### revue de presse
- une [review](https://cloud-toulon.isen.fr/d/0d68030fad/files/?p=/Stratopolis/Stratopolis_Review_-_with_Tom_and_Melody_Vasel.mp4&dl=1) avec Tom et Melody Vasel (en anglais)
- un [tutoriel](https://cloud-toulon.isen.fr/d/0d68030fad/files/?p=/Stratopolis/Tutorial_-_Stratopolis.mp4&dl=1) (en espagnol)
- Quelques [avis](https://www.trictrac.net/jeu-de-societe/stratopolis)
####acheter
Quelques liens pour acheter le jeu
- [gigamic](http://www.gigamic.com/jeu/stratopolis)
- [ludifolie](http://www.ludifolie.com/produit.php?ref=stratopolis)
- [variantes](http://www.variantesi.com/jeu-strategie-tactique-moderne-boutique/40645-Stratopolis-3420000000000.html)
- [amazon](https://www.amazon.fr/dp/B0079XFP7E)
- [fnac](http://www.fnac.com/Gigamic-Stratopolis/a4792732/w-4)
- [fnac](http://www.fnac.com/Gigamic-Stratopolis/a4792732/w-4)

## Utilisation
#####pré-requis
-un ordinateur avec un système linux \n
-bibliothèque LX11 \n
-[OpenGL](https://www.opengl.org/)/[GLUT](https://www.opengl.org/resources/libraries/glut/) \n
-[GCC](https://gcc.gnu.org/) (une version récente est conseillée >5.0) \n
-[make](https://www.gnu.org/software/make/)
#####compilation
##### pré-requis
- un ordinateur avec un système linux
- bibliothèque LX11
- [OpenGL](https://www.opengl.org/)/[GLUT](https://www.opengl.org/resources/libraries/glut/)
- [GCC](https://gcc.gnu.org/) (une version récente est conseillée >5.0)
- [make](https://www.gnu.org/software/make/)
##### compilation
la compilation s'effectue à l'aide de la commande

```bash
make
```
dans le dossier racine du projet.

#####lancement
##### lancement
le programme se lance grâce à la commande

```bash
./main
```
dans le dossier racine du projet
#####nettoyage
##### nettoyage
la commande

```bash
make clean && make
```
permet la regénération de l'ensemble des binaires
##### commandes
-la souris est utilisée pour cliquer sur n'importe quel bouton (menus, ou en jeu)\n
-pour changer les noms de joueurs il faut cliquer sur le bouton changer les noms dans le menu des option, la touche retour permet de supprimer un caractère, et la touche entrée permet de valider et de passer au nom suivant, une fois le deuxième nom rentré, la touche entrée permet de retourner au menu des options. \n
-en jeu, pour jouer une pièce il faut la sélectionner, les flèches ainsi que la molette de la souris permettent de la faire tourner. \n
-l'utilisation de la molette de la souris en étant appuyé sur la touche ctrl permet de zoomer ou dezoomer la grille. \n
-la touche Z permet de trouver le zoom optimal pour la grille. \n
-la touche F permet de rentrer/sortir du mode pleine écran. \n
-la touche Q permet de quitter le jeu. \n
#####divers
-L'ia joue dans un temps court (inférieur à 30secondes) uniquement pour les niveaux de difficulté facile et moyen, la recherche de coup pour les difficultés supérieures peut se réveler extrèmement longue (supérieure à 10 minutes) \n
-L'utilisation de valgrind peut provoquer des lenteurs au niveau du thread parrallèle lancé pour l'ia, ce qui nuit à la fluidité du jeu \n
-Deux fuites mémoires ont été reperées, mais elle semblent être
- la souris est utilisée pour cliquer sur n'importe quel bouton (menus, ou en jeu)
- pour changer les noms de joueurs il faut cliquer sur le bouton changer les noms dans le menu des option, la touche retour permet de supprimer un caractère, et la touche entrée permet de valider et de passer au nom suivant, une fois le deuxième nom rentré, la touche entrée permet de retourner au menu des options.
- en jeu, pour jouer une pièce il faut la sélectionner, les flèches ainsi que la molette de la souris permettent de la faire tourner.
- l'utilisation de la molette de la souris en étant appuyé sur la touche ctrl permet de zoomer ou dezoomer la grille.
- la touche Z permet de trouver le zoom optimal pour la grille.
- la touche F permet de rentrer/sortir du mode pleine écran.
- la touche Q permet de quitter le jeu.
##### divers
- L'ia joue dans un temps court (inférieur à 30secondes) uniquement pour les niveaux de difficulté facile et moyen, la recherche de coup pour les difficultés supérieures peut se réveler extrèmement longue (supérieure à 10 minutes)
- L'utilisation de valgrind peut provoquer des lenteurs au niveau du thread parrallèle lancé pour l'ia, ce qui nuit à la fluidité du jeu
- Deux fuites mémoires ont été reperées, mais elle semblent être
causées par la librairie libisentlib. Mais la mémoire perdue reste la même quelle que soit la durée du programme (la fuite n'a donc pas lieu sur la durée)
## Auteurs
- [*HIPAULT Theo (chef de projet)*](https://github.com/Parazar)
- [BILLAUD William](https://github.com/william-billaud)

##Remerciement
## Remerciement
[M. Colonna](http://fm.colonna.free.fr/?Accueil), Docteur en informatique - Enseignant-chercheur à l'ISEN Toulon
91 changes: 49 additions & 42 deletions affichage.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
/*!
* \brief Affiche le menu principal (Jouer, Aide, Options, Quitter), et la sélection
* \return rien
*/
*/
void afficheMenu() {

float tailleBoutonX = largeurFenetre() / 10;
Expand Down Expand Up @@ -70,8 +70,12 @@ void afficheMenu() {

/*!
* \brief Affiche le menu de sélection des options, et la sélection
* \param[in] limiteTemp indique si la limite de temp est activée
* \param[in] dureeLimite indique la durée maximum d'un tour
* \param[in] niveauDifficulte indique le niveau de difficulté (entre 0 et 4)
* \param[in] modeSuivant indique le mode de jeu actuel
* \return rien
*/
*/
void afficheOption(bool limiteTemp, unsigned int dureeLimite, int niveauDifficulte, int modeSuivant) {
float tailleBoutonX = largeurFenetre() / 6;
float tailleBoutonY = hauteurFenetre() / 20;
Expand Down Expand Up @@ -170,7 +174,7 @@ void afficheOption(bool limiteTemp, unsigned int dureeLimite, int niveauDifficul
/*!
* \brief Affiche les règles du jeu et le mode d’emploi du programme, et la sélection
* \return rien
*/
*/
void afficheAide(void) {
float centreX = largeurFenetre() / 2;
float centreY = hauteurFenetre() / 2;
Expand Down Expand Up @@ -207,8 +211,11 @@ void afficheAide(void) {

/*!
* \brief affiche le joueur gagnant et son score
* \param[in] scoreGagnant score du gagnant
* \param[in] scorePerdant score du perdant
* \param[in] joueurGagnant nom du joueur gagnant
* \return rien
*/
*/
void afficheVictoire(int scoreGagnant, int scorePerdant, char joueurGagnant[15]) {
static bool chgmtCouleur = true;
static unsigned int timerChgmtCouleur = 0;
Expand Down Expand Up @@ -268,10 +275,10 @@ void afficheVictoire(int scoreGagnant, int scorePerdant, char joueurGagnant[15])

/*!
* \brief Affiche le plateau de jeu, la couleur et la hauteur de chaque case
* \param [in] zoom : nombre de case affiché par ligne/colonne
* \param basX : abscisse de la case du bas
* \param basY : abscisse de la case du bas
*/
* \param[in] zoom : nombre de case affiché par ligne/colonne
* \param[in] basX : abscisse de la case du bas
* \param[in] basY : abscisse de la case du bas
*/
void afficheGrille(unsigned int zoom, unsigned int basX, unsigned int basY) {
//Bloque le nombre maximum de cases à afficher
if (zoom < 1) {
Expand Down Expand Up @@ -340,7 +347,7 @@ void afficheGrille(unsigned int zoom, unsigned int basX, unsigned int basY) {
* \param [in] minY : coordonnee minimum en ordonnée
* \param [in] maxX : coordonnee maximum en abscisse
* \param [in] maxY : coordonnee maximum en ordonée
* \param [in] estGrisee : determine si la case doit être grisée (true) ou non (false)
* \param [in] estGrisee : determine si la case doit être grisée (true) ou non (false)
*/
void affichePiece(int numeroPiece, orientation orientationPiece, int minX,
int minY, int maxX, int maxY, bool estGrisee) {
Expand Down Expand Up @@ -402,7 +409,7 @@ void affichePiece(int numeroPiece, orientation orientationPiece, int minX,
* \param [in] maxX : coordonnee maximum en abscisse
* \param [in] maxY : coordonnee maximum en ordonée
* \param [in] estGrisee : determine si la case doit être grisée (true) ou non (false)
*/
*/
void afficheCase(couleur couleurCase, int hauteurCase, float minX,
float minY, float maxX, float maxY, bool estGrisee) {
char hauteur[20];
Expand Down Expand Up @@ -436,7 +443,7 @@ void afficheCase(couleur couleurCase, int hauteurCase, float minX,
* \param [in] couleurCase : couleur de la case à déterminer
* \param [in] estGrisee : determine si la couleur doit être grisée (true) ou non (false)
* \return rien
*/
*/
void determineCouleur(couleur couleurCase, bool estGrisee) {
switch (couleurCase) {
case neutre:
Expand Down Expand Up @@ -540,7 +547,7 @@ void afficheBordureEntreCases(int numero1, int numero2, float centreX1,
* \param[in] nomJ2 : nom du deuxième joueur
* \param[in] joueurActuelle : joueur dont c'est le tour
* \return rien
*/
*/
void afficheInterface(char nomJ1[15], char nomJ2[15], int joueurActuelle) {
pieces pieceJ1;
pieces pieceJ2;
Expand Down Expand Up @@ -636,7 +643,7 @@ void afficheInterface(char nomJ1[15], char nomJ2[15], int joueurActuelle) {
* \param[in] coupJoueur : coup à afficher
* \param[in] zoom de la grille
* \return rien
*/
*/
void affichePredictif(coup coupJoueur, int zoom) {
dessinePredictif(coupJoueur, estValideCoup(coupJoueur), zoom);
}
Expand Down Expand Up @@ -816,15 +823,15 @@ void afficheDuree(int taille) {

/*!
* \brief fonction permettant de savoir si le clic est dans un rectangle
* \param xClic : abscisse du clic
* \param yClic : ordonnée du clic
* \param xMin : abscisse minimum du rectangle
* \param yMin : ordonnée minimum du rectangle
* \param xMax : abscisse maximum du rectangle
* \param yMax : ordonnee maximum du rectangle
* \param[in] xClic : abscisse du clic
* \param[in] yClic : ordonnée du clic
* \param[in] xMin : abscisse minimum du rectangle
* \param[in] yMin : ordonnée minimum du rectangle
* \param[in] xMax : abscisse maximum du rectangle
* \param[in] yMax : ordonnee maximum du rectangle
* \return true si le clic est dans le rectangle
* \return false si le clic n'est pas dans le rectangle
*/
*/
bool estDansRectangle(int xClic, int yClic, int xMin, int yMin, int xMax, int yMax) {
int tmp;
if (xMin > xMax) {
Expand Down Expand Up @@ -933,8 +940,8 @@ void afficheScore(int scoreJ1, int scoreJ2) {

/*!
* \brief affiche le menu en jeu
* \param pause : true si le jeu est pause, false sinon
*/
* \param[in] pause : true si le jeu est pause, false sinon
*/
void afficheMenuEnjeu(bool pause) {

float taille =
Expand Down Expand Up @@ -992,12 +999,12 @@ void afficheMenuEnjeu(bool pause) {

/*!
* \brief trace un rectangle vide
* \param xCoin1 : abscisse du premier coin
* \param yCoin1 : ordonnée du premier coin
* \param xCoin2 : abscisse du second coin
* \param yCoin2 : ordonnée du second coin
* \param taille : epaisseur du trait
*/
* \param[in] xCoin1 : abscisse du premier coin
* \param[in] yCoin1 : ordonnée du premier coin
* \param[in] xCoin2 : abscisse du second coin
* \param[in] yCoin2 : ordonnée du second coin
* \param[in] taille : epaisseur du trait
*/
void rectangleVide(float xCoin1, float yCoin1, float xCoin2, float yCoin2, float taille) {
epaisseurDeTrait(taille);
ligne(xCoin1, yCoin1, xCoin1, yCoin2);
Expand All @@ -1009,11 +1016,11 @@ void rectangleVide(float xCoin1, float yCoin1, float xCoin2, float yCoin2, float

/*!
* \brief trace l'indice
* \param coupJoueur : structure contenant les informations concernant l'indice
* \param zoom : taille du zoom
* \param x : abcisse du zoom
* \param y : ordonnée du zoom
*/
* \param[in] coupJoueur : structure contenant les informations concernant l'indice
* \param[in] zoom : taille du zoom
* \param[in] x : abcisse du zoom
* \param[in] y : ordonnée du zoom
*/
void afficheIndice(coup coupJoueur, int zoom, int x, int y) {
if (time(NULL) % 2 == 0) {
return;
Expand Down Expand Up @@ -1060,10 +1067,10 @@ void afficheIndice(coup coupJoueur, int zoom, int x, int y) {

/*!
* \brief affiche l'écran pour changer le nom des joueur
* \param nomJ1 : nom du joueur 1
* \param nomJ2 : nom du joueur 2
* \param joueurActuel : joueur dont le nom est en train d'être modifié
*/
* \param[in] nomJ1 : nom du joueur 1
* \param[in] nomJ2 : nom du joueur 2
* \param[in] joueurActuel : joueur dont le nom est en train d'être modifié
*/
void afficheChangemntNom(char nomJ1[15], char nomJ2[15], int joueurActuel) {
effaceFenetre(0, 0, 0);
epaisseurDeTrait(1);
Expand Down Expand Up @@ -1097,11 +1104,11 @@ void afficheChangemntNom(char nomJ1[15], char nomJ2[15], int joueurActuel) {

/*!
* \brief change le nom du joueur actuel en fonction du dernier caractère clavier
* \param nomJ1 : nom du joueur 1
* \param nomJ2 : nom du joueur 2
* \param joueurActuel : joueur dont le nom est en train d'etre modifié
* \param[in/out] nomJ1 : nom du joueur 1
* \param[in/out] nomJ2 : nom du joueur 2
* \param[in] joueurActuel : joueur dont le nom est en train d'etre modifié
* \return joueurActuel
*/
*/
int changeNom(char nomJ1[15], char nomJ2[15], int joueurActuel) {

char caractere = caractereClavier();
Expand All @@ -1128,7 +1135,7 @@ int changeNom(char nomJ1[15], char nomJ2[15], int joueurActuel) {

/*!
* \brief affiche les temps restants des joueurs
* \param joueurActuel
* \param[in] joueurActuel
* le joueur dont ce n'est pas le tour voit son temps restant mis à zero
*/
void afficheTempRestant(int joueurActuel) {
Expand Down
Loading

0 comments on commit 6bd1a1d

Please sign in to comment.