Problème de déplacement jeu de dame

Fermé
math9 Messages postés 5 Date d'inscription samedi 31 octobre 2015 Statut Membre Dernière intervention 8 janvier 2016 - Modifié par jordane45 le 23/12/2015 à 03:31
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Derniè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

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
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
0