math9
Messages postés5Date d'inscriptionsamedi 31 octobre 2015StatutMembreDernière intervention 8 janvier 2016
-
Modifié par jordane45 le 23/12/2015 à 03:31
faseldi
Messages postés279Date d'inscriptiondimanche 9 novembre 2014StatutMembreDernière intervention 3 janvier 2017
-
23 déc. 2015 à 03:29
Bonjour,
svp je rencontre un problème sur le déplacement de de mon jeu de dame en langage C(à chaque fois que j'essai de compilé le programme, il plante donc n'arrive pas à le lire. es ce que quelqu'un pourrait m'aider à le corriger svp; c'est assez urgent Merci à tous
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define PION_Noir -1
#define DAME_NOIR -2
#define PION_Blanc 1
#define DAME_BLANC 2
# define CASE_VIDE_NOIR 3
#define case_vide 0
# define CASE_VIDE_BLANC 4
typedef struct damier {
int nb_noir ; // Représente le nombre de pion noir
int nb_blanc ; // Représente le nombre de pion blanc
} tdamier ;
typedef struct {
char nom[50];
int type;
int couleur;
} player;
void init_damier(tdamier damier, int plateau[10][10])
{
int i,j,k ;
damier.nb_blanc = 20 ;
damier.nb_noir = 20 ;
//On initialise le tableau
for(i=0 ;i<10 ;i++)
{
for(j=0 ;j<10 ;j++)
{
plateau[i][j]=0 ;
}
}
//On remplie la partie haute du damier par des pions noirs
for(i=0 ;i<4 ;i++)
{
//Si i est pair, la première case doit être noir (active)
if(i%2 == 0)
{
k=1 ;
}
else
{
k=0 ;
}
for(j=k;j<10 ;j+=2)
{
plateau[i][j] = PION_Noir ;
}
}
//On remplie la partie basse du damier par des pions blancs
for(i=6 ;i<10 ;i++)
{
//Si i est pair, la premier case doit être noir (active)
if(i%2 == 0)
{
k=1 ;
}
else
{
k=0 ;
}
for(j=k;j<10 ;j+=2)
{
plateau[i][j] = PION_Blanc;
}
}
for(i=4;i<5;i++)
{
if(i%2 == 0)
{
k=3 ;
}
for(j=k-2;j<10 ;j+=2)
{
plateau[i][j] = CASE_VIDE_NOIR;
}
//}
//for(i=4;i<5;i++)
//{
if(i%2 == 0)
{
k=4 ;
}
for(j=k-3;j<10 ;j+=2)
{
plateau[i][j] = CASE_VIDE_BLANC;
}
}
for(i=5;i<6;i++)
{
if(i%2 != 0)
{
k=3 ;
}
for(j=k-2;j<10 ;j+=2)
{
plateau[i][j] = CASE_VIDE_NOIR;
}
//for(i=5;i<6;i++)
//{
if(i%2 == 0)
{
k=4 ;
}
for(j=k-3;j<10 ;j+=2)
{
plateau[i][j] = CASE_VIDE_BLANC;
}
}
plateau[1][1]= 'P';
plateau[1][1]= 'N';
plateau[3][3]= 'P';
plateau[3][3]= 'N';
plateau[5][5] ='P';
plateau[5][5]= 'N';
plateau[7][7]= 'P';
plateau[7][7]= 'N';
plateau[5][7]= 'P';
plateau[5][7]= 'N';
plateau[3][7]= 'P';
plateau[3][7]= 'N';
plateau[4][4]= 'P';
plateau[4][4]= 'B';
plateau[2][3]= 'D';
plateau[4][3]= 'D';
}
void affiche_ligne(tdamier damier, int i,int plateau[10][10]) {
int j ;
printf("| ") ;
printf("%2d ",i+1) ;
for(j=0 ;j<10 ;j++) {
switch(plateau[i][j])
{
case PION_Blanc :
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xF2);
printf(" O ") ;
break ;
case PION_Noir :
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xF2);
printf(" X ") ;
break ;
case DAME_NOIR :
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xF2);
printf(" N ") ;
break ;
case DAME_BLANC :
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xF2);
printf(" B ") ;
break ;
case CASE_VIDE_NOIR :
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x02);
printf(" ") ;
break ;
case CASE_VIDE_BLANC :
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xF2);
printf(" ") ;
break ;
default:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x02);
printf(" ") ;
break ;
}
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x21);
printf(" %2d\n",i+1) ;
printf("\n") ;
}
void affiche_damier(tdamier damier,int plateau[10][10] )
{ int i;
for(i=0;i<10;i++)
affiche_ligne(damier,i,plateau);
}
typedef struct { int ligne,col;
} Case;
typedef struct { Case case_i,case_f;
} deplacement;
////déplacement des pions
//
///*void deplace_pion(tdamier damier,int prise,int couleur,deplacement d,int plateau[10][10])
//{
// plateau[d.case_i.ligne][d.case_i.col] = case_vide;
//
// plateau[d.case_f.ligne][d.case_f.col] = couleur;
//
//if(prise == 1)
// {
// if(couleur == PION_Blanc)
// {
// damier.nb_noir--;
// }
// else{
// damier.nb_blanc--;
// }
//plateau[(d.case_f.ligne + d.case_i.ligne)/2] [(d.case_f.col + d.case_i.col)/2]=case_vide;
// }
// }
//
// int test_deplacement(tdamier damier,int prise,int couleur,deplacement d,int plateau[10][10])
// {
// //Le pion sélectionné n’est pas un pion du joueur
//
// if(plateau[d.case_i.ligne][d.case_i.col]!= couleur)
// return -1;
// //Case occupé
// if(plateau[d.case_f.ligne][d.case_f.col]!= case_vide)
// return -1;
// //Mauvaise Ligne
// if(d.case_f.ligne!= d.case_i.ligne - couleur)
// return -1;
// //Mauvaise colonne
//
// if(d.case_f.col!= (d.case_i.col+1) && d.case_f.col!= (d.case_i.col-1) )
// {
// return -1;
// }
// else
// return 0;
//
// }*/
/* Déplacement des pions en avant gauche
* Entrée: Le damier et la coordonné de la pièce
* Sortie: 1 si déplacement possible et 0 si pas de déplacement possible
*/
int pdavg(tdamier damier,deplacement d,int plateau[10][10])
{
/* Les blancs vont en AVANT*/
if (plateau[d.case_i.ligne][d.case_i.col]=='B')
{
if (d.case_i.ligne-1>=0 && d.case_i.col+1<10 && plateau[d.case_f.ligne][d.case_f.col]!=case_vide && plateau[d.case_f.ligne-1][d.case_f.col+1]==case_vide)
return 1;
else
return 0;
}
else
return 0;
}
/* Déplacement des pions en avant droit
* Entrée: Le damier et la coordonné de la pièce
* Sortie: 1 si déplacement possible et 0 si pas de déplacement possible
*/
int pdavd(tdamier damier,deplacement d,int plateau[10][10])
{
/* Les blancs vont en AVANT*/
if (plateau[d.case_i.ligne][d.case_i.col]=='B')
{
if (d.case_i.ligne+1<10 && d.case_i.col+1<10 && plateau[d.case_f.ligne][d.case_f.col]!=case_vide && plateau[d.case_f.ligne+1][d.case_f.col+1]==case_vide)
return 1;
else
return 0;
}
else
return 0;
}
/* Déplacement des pions en arrière gauche
* Entrée: Le damier et la coordonné de la pièce
* Sortie: 1 si déplacement possible et 0 si pas de déplacement possible
*/
int pdarg(tdamier damier,deplacement d,int plateau[10][10])
{
/* Les noirs vont en ARRIERE */
if (plateau[d.case_i.ligne][d.case_i.col]=='N')
{
if (d.case_i.ligne-1>=0 && d.case_i.col-1>=0 && plateau[d.case_f.ligne][d.case_f.col]!=case_vide && plateau[d.case_f.ligne-1][d.case_f.col-1]==case_vide)
return 1;
else
return 0;
}
else
return 0;
}
/* Déplacement des pions en arrière droit
* Entrée: Le damier et la coordonné de la pièce
* Sortie: 1 si déplacement possible et 0 si pas de déplacement possible
*/
int pdard(tdamier damier,deplacement d,int plateau[10][10])
{
/* Les noirs vont en ARRIERE */
if (plateau[d.case_i.ligne][d.case_i.col]=='N')
{
if (d.case_i.ligne+1<10 && d.case_i.col-1>=0 && plateau[d.case_f.ligne][d.case_f.col]!=case_vide && plateau[d.case_f.ligne+1][d.case_f.col-1]==case_vide)
return 1;
else
return 0;
}
else
return 0;
}
int main()
{
deplacement d;
//int prise;
//int couleur;
int plateau[10][10];
tdamier damier;
init_damier(damier,plateau);
affiche_damier(damier,plateau);
//deplace_pion(damier,prise,couleur,d,plateau);
//test_deplacement(damier,prise,couleur,d,plateau);
pdavg(damier,d,plateau);
pdavd(damier,d,plateau);
pdarg(damier,d,plateau);
pdard(damier,d,plateau);
return 0;
}
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici :ICI
faseldi
Messages postés279Date d'inscriptiondimanche 9 novembre 2014StatutMembreDernière intervention 3 janvier 201720 23 déc. 2015 à 03:29
Bonsoir, sans la balise CODE! on ne peut pas lire ton code, il n'y a même pas d'indentations sans cette balise, bref du coup on a un code illisible, pense à la mettre