Skip to content
Extraits de code Groupes Projets
Valider 8e9f2089 rédigé par Loïc DUBARD's avatar Loïc DUBARD :speech_balloon:
Parcourir les fichiers

rajout du vieux mode d'affichage

parent adc3e5c3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -3,9 +3,12 @@ WIN32=i686-w64-mingw32-gcc
WIN64=x86_64-w64-mingw32-gcc
CFLAGS=-Wall -Wextra -ansi -g -lm -std=c99
stackchess : main.o tableau.o affichage.o action.o deplacement.o
stackchess : main.o tableau.o affichage.o affichageold.o action.o deplacement.o
cd obj && $(CC) $(CFLAGS) $^ -o ../build/$@
play: stackchess
build/stackchess
all: stackchess stackchess32.exe stackchess64.exe clean
affichage.o : src/affichage.c src/affichage.h src/couleur.h
......@@ -26,10 +29,10 @@ affichage64.o : src/affichage.c src/affichage.h src/couleur.h
%.o: src/%.c src/%.h
$(CC) $(CFLAGS) -c $< -o obj/$@
stackchess32.exe : main32.o tableau32.o affichage32.o action32.o deplacement32.o
stackchess32.exe : main32.o tableau32.o affichage32.o affichageold32.o action32.o deplacement32.o
cd obj && $(WIN32) $(CFLAGS) $^ -o ../build/$@
stackchess64.exe : main64.o tableau64.o affichage64.o action64.o deplacement64.o
stackchess64.exe : main64.o tableau64.o affichage64.o affichageold64.o action64.o deplacement64.o
cd obj && $(WIN64) $(CFLAGS) $^ -o ../build/$@
clean :
......
......@@ -82,7 +82,9 @@ On ne peut pas sauter par dessus une pièce (mais on peut se placer dessus si el
# 3. Conseils d'utilisation
==================================================================================
Voici différentes commandes qui vont permettrons dde compiler et de jouer au jeu Stackchess en mode console :
Le rapport du projet se trouve à "doc/rapport.pdf" et les fichiers sources (.c et .h) se trouvent dans le répertoire "src".
Voici différentes commandes qui vont permettrons de compiler et de jouer au jeu Stackchess en mode console :
**Entrez dans votre console** :
......@@ -92,6 +94,9 @@ Voici différentes commandes qui vont permettrons dde compiler et de jouer au je
> make play
**Pour compiler le jeu pour windows :**
Pour créer des executables windows (sous linux) vous devez installer le compilateur cross-platform mingw :
> sudo apt-get install mingw-w64
> make all
......
Aucun aperçu pour ce type de fichier
Aucun aperçu pour ce type de fichier
Aucun aperçu pour ce type de fichier
doc/latex/affichagenonansi.jpg

23,9 ko

Aucun aperçu pour ce type de fichier
......@@ -72,6 +72,18 @@ Les différentes opérations implémentées sur le plateau sont :
\item deplacer les pièces du plateau si le déplacement est légal
\end{itemize}
\subsection{La gestion de l'affichage}
Il existe deux mode d'affichage : avec ou sans coloration.\\
Pour accéder au mode d'affichage il suffit de mettre comme second argument d'exécution du programme un 0 si on ne veut pas de couleur et un 1 sinon. Le premier argument correspond à la taille du plateau.
\paragraph{Affichage sans couleurs :}
Il s'agit de celui présenté dans l'énoncé du sujet avec des barres verticales et des tirets pour délimiter les cases :
\begin{figure}[H]
\centering
\includegraphics[scale=1]{affichagenonansi.jpg}
\end{figure}
\paragraph{Affichage en couleurs :}
L'affichage se fait en mode terminal, en utilisant les séquences d'echappement ANSI pour avoir de la couleur :
\begin{minted}{C}
#define clrscr() printf("\033[H\033[2J") //rafraichi l'écran
......
Fichier ajouté
......@@ -8,12 +8,12 @@
void realiser(char action,pile **tableau,int N,char *cases,int *tour)
void realiser(char action,pile **tableau,int N,char *cases,int *tour,int ansi)
{
char sel[4]="\0\0\0\0";
switch (action){
case 'c' :
affichage(tableau,N,cases,*tour,"Entrez les coordonnées de la case à selectionner >");
affichage(tableau,N,cases,*tour,"Entrez les coordonnées de la case à selectionner >",ansi);
scanf("%3s",sel);
viderbuffer();
if (sel[1] != '\0'){
......@@ -21,10 +21,10 @@ void realiser(char action,pile **tableau,int N,char *cases,int *tour)
}
break;
case 'd' :
deplacement(tableau,N,cases,tour);
deplacement(tableau,N,cases,tour,ansi);
break;
case 'a' :
affichage(tableau,N,cases,*tour,"\n Voulez vous abandonner le jeu (y|n)? \n");
affichage(tableau,N,cases,*tour,"\n Voulez vous abandonner le jeu (y|n)? \n",ansi);
char c;
scanf("%1s",&c);
if (c == 'y'){
......
......@@ -4,4 +4,4 @@
* @assign
* @ensure fait entrer dans le bon mode (abandon, selection ou déplacement)
*/
void realiser(char action,pile **tableau,int N,char *cases,int *tour);
void realiser(char action,pile **tableau,int N,char *cases,int *tour,int ansi);
......@@ -3,6 +3,7 @@
#include"affichage.h"
#include"couleur.h"
#include<math.h>
#include"affichageold.h"
/*affichage.c*/
void viderbuffer()
{
......@@ -79,12 +80,21 @@ void affichetableau_pile_cote(pile **tableau, int N,char *sel)
}
void affichage(pile **tableau,int N, char *sel,int tour,char *message)
void affichage(pile **tableau,int N, char *sel,int tour,char *message,int ansi)
{
if (ansi == 1){
affichetableau_pile_cote(tableau,N,sel);
if (tour%2 == 0)
printf("\n [\x1B[1;5;32m%sBLANCS" RESET "] %s",NOIR,message);
else
printf("\n [\x1B[1;5;31m%sNOIRS" RESET "] %s",NOIR,message);
} else {
affiche(tableau,N);
affichepile(sel,tableau,N);
if (tour%2 == 0)
printf("\n [BLANCS] %s",message);
else
printf("\n [NOIRS] %s",message);
}
}
......@@ -2,6 +2,7 @@
#define _AFFICHAGE
#include"tableau.h"
#include"affichageold.h"
/*affichage.h*/
......@@ -37,5 +38,5 @@ void affichepion(char *pion,char* CASE);
* @assign
* @ensure combine affichetableau_pile_cote() et l'affichage du message destiné à l'utilisateur
*/
void affichage(pile **tableau,int N,char *sel,int tour,char *message);
void affichage(pile **tableau,int N,char *sel,int tour,char *message,int ansi);
#endif
......@@ -10,7 +10,7 @@ void affiche(pile** tableau, int N)
int i,j;
printf(" ");
for(i=0 ; i<N ; i++){
printf(" %c ",'a'+i);
printf(" %c ",'A'+i);
}
printf("\n");
for (i=0 ; i<N ; i++){
......@@ -47,14 +47,14 @@ void affichecouleur(pile **tableau, int N)
if ((i+j)%2 == 1){
if (est_vide(tableau[i][j]))
printf(NOIR " " RESET);
else if (tableau[i][j].sommet->chaine[1] == 'N')
else if (tableau[i][j]->chaine[1] == 'N')
printf(PNOIRE NOIR "%c " RESET, *sommet(tableau[i][j]));
else
printf(PBLANCHE NOIR"%c " RESET, *sommet(tableau[i][j]));
} else {
if (est_vide(tableau[i][j]))
printf(BLANC " " RESET);
else if (tableau[i][j].sommet->chaine[1] == 'N')
else if (tableau[i][j]->chaine[1] == 'N')
printf(PNOIRE BLANC"%c " RESET, *sommet(tableau[i][j]));
else
printf(PBLANCHE BLANC"%c " RESET, *sommet(tableau[i][j]));
......@@ -75,9 +75,9 @@ void affichepile(char *sel,pile **tableau,int N)
printf("Aucune case n'est sélectionnée.");
else {
printf("%s:\n",sel);
noeud* tmp=tableau[i][j].sommet;
pile tmp=tableau[i][j];
while (tmp != NULL){
affichepion(tmp->chaine,NOIR);
printf("%s",tmp->chaine);
tmp=tmp->next;
printf("\n");
}
......
#ifndef _AFFICHAGE
#define _AFFICHAGE
#ifndef _AFFICHAGEOLD
#define _AFFICHAGEOLD
#include"tableau.h"
/*affichageold.h*/
/*contient les vielles fonctions d'affichage*/
/*contient les fonctions d'affichage non compatible ANSI*/
/*
* @require \nothing
* @assign \nothing
......
......@@ -6,7 +6,7 @@
//#include<unistd.h>
/*deplacement.c*/
void deplacement(pile **tableau, int N, char *sel, int *tour)
void deplacement(pile **tableau, int N, char *sel, int *tour,int ansi)
{
if (*sel != '\0'){
int i,j;
......@@ -14,11 +14,11 @@ void deplacement(pile **tableau, int N, char *sel, int *tour)
if (i>=N || i<0 || j>=N || j<0)
printf("\nCase sélectionnée hors du tableau.");
else if (sommet(tableau[i][j])[1] == "BN"[*tour%2]){
affichage(tableau,N,sel,*tour,"Combien de pions à déplacer >");
affichage(tableau,N,sel,*tour,"Combien de pions à déplacer >",ansi);
int nb=nb_a_selectionner(tableau,i,j,tour);
if (nb>0){
int i_dest,j_dest;
affichage(tableau,N,sel,*tour,"Entrez les coordonnées de la case de destination>");
affichage(tableau,N,sel,*tour,"Entrez les coordonnées de la case de destination>",ansi);
case_destination(tableau,N,i,j,&i_dest,&j_dest,nb,tour);
}
} else
......
......@@ -10,7 +10,7 @@
* @assign
* @ensure détermine si le déplacement est légal ou pas et l'effectue si c'est le cas
*/
void deplacement(pile **tableau,int N, char *sel, int *tour);
void deplacement(pile **tableau,int N, char *sel, int *tour,int ansi);
/*
* @require
......
......@@ -7,9 +7,11 @@
int main(int argc, char **argv)
{
int N = 6;
int N = 6,ansi=1;
if (argc != 1){
N=strtol(argv[1],NULL,10);
if (argc == 3)
ansi=strtol(argv[2],NULL,10);
}
pile **tableau=initialisation(N);
debut_partie(tableau,N);
......@@ -17,9 +19,9 @@ int main(int argc, char **argv)
int tour=0;
char sel[4]="\0\0\0\0";
while (! partie_finie(tableau, N,tour)){
affichage(tableau,N,sel,tour,"Entrez une action (c,d,a) >");
affichage(tableau,N,sel,tour,"Entrez une action (c,d,a) >",ansi);
scanf("%c",&action);
realiser(action,tableau,N,sel,&tour);
realiser(action,tableau,N,sel,&tour,ansi);
}
nettoyer(tableau,N);
return 0;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter