Jeux de dames en C

charisme

Membre confirmé
29 Janvier 2006
94
1
je suis novice en programation. je voudrais pour mon propre loisir programmer un jeu de dames en langage c qui va s'executer sur un terminal Xterm. pouvez vous m'aider à le faire pas a pas pour que je puisse bien comprendre le code.
pour le moment j'ai un pb pour afficher le damier.
j'attends votre aide
 
Je pense que tu obtiendra plus d'aide en spécifiant à chaque fois quel est ton problème.

J'espère aussi que tu ne commence pas avec de trop ambitieux projet (as-tu réalisé les classiques pendu, jeux des allumettes à la fort-Boyard etc... avant de te lancer dans ce projet qui est plus gros ??)
 
  • J’aime
Réactions: GrandGibus
Tu t'attaques à un projet tres intéressant ! Je pense que la première étape (si ce n'est deja fait) sera d'éteindre ton Mac et à réflechir à ce que tu veut faire avec un crayon et du papier.

Ensuite, si tu as des problemes de "cuisine informatique", essaie de les formuler de manière très précise.

Cordialement
 
truk2oof a dit:
Je pense que tu obtiendra plus d'aide en spécifiant à chaque fois quel est ton problème.

J'espère aussi que tu ne commence pas avec de trop ambitieux projet (as-tu réalisé les classiques pendu, jeux des allumettes à la fort-Boyard etc... avant de te lancer dans ce projet qui est plus gros ??)
non c'est mon premier veritable projet en C je le fait parce quon me l'a demandé en classe.
Didier Guillion a dit:
Tu t'attaques à un projet tres intéressant ! Je pense que la première étape (si ce n'est deja fait) sera d'éteindre ton Mac et à réflechir à ce que tu veut faire avec un crayon et du papier.

Ensuite, si tu as des problemes de "cuisine informatique", essaie de les formuler de manière très précise.

Cordialement
j'ai un cahier de charge à respecter. pour le moment je n'arrive pas à faire deplacer les pions du damier. les coordonnées doivent etre entrée a la main. j'ai pensé à une structure mais ça ne marche pas.
 
ntx a dit:
Et donc tu viens sur le net pour qu'on te file la réponse :siffle: :rolleyes: :D
c'est clair que pour le moment ça m'arangerait. c'est ma première année de programmation et j'ai besoin de cette note. je compte me perfectionner dans la programmation (raison pour laquelle j'ai un mac) mais je n'ai pas assez d'experience pour ce genre de programme et je doit le rendre dans 5 jours et je n'ai encore rien fait d'autre que l'affichage du damier.
j'aurai vraiment besoin d'un programme que je pourrai modifier selon mon cahier de charge.
 
charisme a dit:
c'est clair que pour le moment ça m'arangerait. c'est ma première année de programmation et j'ai besoin de cette note. je compte me perfectionner dans la programmation (raison pour laquelle j'ai un mac) mais je n'ai pas assez d'experience pour ce genre de programme et je doit le rendre dans 5 jours et je n'ai encore rien fait d'autre que l'affichage du damier.
j'aurai vraiment besoin d'un programme que je pourrai modifier selon mon cahier de charge.
parasite

http://fr.wikipedia.org/wiki/Parasite

http://www.doctissimo.fr/html/psychologie/mag_2001/mag0323/ps_3680_charisme.htm
 
  • J’aime
Réactions: supermoquette
donne ton code et ton UML
bon t'as pas l'air de vouloir le faire ton jeux

quelle library utilises tu pour paint ton damier ?
les events de cases ?

sdl / vtk ou alors on fait ca a la console ?
 
tatouille a dit:
donne ton code et ton UML
bon t'as pas l'air de vouloir le faire ton jeux

quelle library utilises tu pour paint ton damier ?
les events de cases ?

sdl / vtk ou alors on fait ca a la console ?
je le fait à la console. j'arive à afficher le damier mais mes problemes sont:
-au niveau du deplacement
-au niveau de la dame
-au niveau de boufer les pions
-au niveau de la sauvegarde
voila le code:

Bloc de code:
#include <stdio.h>
#include <ctype.h>

/*variables globales*/
char joueur1[20];
char joueur2[20];
char tab[11][11];

/*AFFICHAGE DU DAMIER*/
void affichage_damier ()
{
/* Declarations des variables */
int i=0;   // coordonnÈe de la ligne
int j;    // coordonnÈe de la colonne
int k=0; // Nombre aidant au remplissage de la grille 
int a;  // Nombre aidant au remplissage de la grille  
int b; // Nombre qui aide &#8225; savoir si la boucle de sÈlection a dÈja ÈtÈ faite au moins une fois
char x;
int y;
char c;
int d;
//char tab[11][11];
char tabl[41];

/* Initialisation du tableau */
for(i=0;i<11;i++)
    {
    for(j=0;j<11;j++)
        {
        tab[i][j]=' ';
        }
    }
    
/* GÈnÈration du plateau de jeu */

i=0;    
for(j=1;j<11;j++)
    {
    tab[i][j]='0'+k++;
    }
k=0;
j=0;
for(i=1;i<11;i++)
    {
    tab[i][j]='a'+k++;
    }

i=1;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==1)
    tab[i][j]='.';
    else
    tab[i][j]='N';
    }
i=2;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==0)
    tab[i][j]='.';
    else
    tab[i][j]='N';
    }
i=3;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==1)
    tab[i][j]='.';
    else
    tab[i][j]='N';
    }
i=4;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==0)
    tab[i][j]='.';
    else
    tab[i][j]='N';
    } 
i=5;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==1)
    tab[i][j]='.';
    else
    tab[i][j]='v';
    }
i=6;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==0)
    tab[i][j]='.';
    else
    tab[i][j]='v';
    } 
i=7;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==1)
    tab[i][j]='.';
    else
    tab[i][j]='B';
    }
i=8;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==0)
    tab[i][j]='.';
    else
    tab[i][j]='B';
    }
i=9;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==1)
    tab[i][j]='.';
    else
    tab[i][j]='B';
    }
i=10;    
for(j=1;j<11;j++)
    {
    a=j%2;
    if(a==0)
    tab[i][j]='.';
    else
    tab[i][j]='B';
    }
    
/* Affichage du plateau de jeu */

i=0;
printf("\t");
j=0;
printf("   ");
for(j=1;j<11;j++)
    {
    printf("    %c   ",tab[i][j]);
    }
for(i=1;i<11;i++)
    {
    printf("\n\t   ---------------------------------------------------------------------------------");
    printf("\n\t   |       |       |       |       |       |       |       |       |       |       |\n");
    printf("       ");
    for(j=0;j<11;j++)
        {
        printf("%c   |   ",tab[i][j]);
        }
    printf("\n\t   |       |       |       |       |       |       |       |       |       |       |");

    }
    printf("\n\t   ---------------------------------------------------------------------------------\n");
}

/*LANCEMENT DU JEU*/
void lancement_jeu ()
{
printf("Joueur 1 (b pions blancs) entrez votre nom\n");
scanf("%s",joueur1);
printf("Joueur 2 (n pions noirs) entrez votre nom\n");
scanf("%s",joueur2);
}

/*DEPLACEMENT*/
void deplacement()
{
//char tab[11][11];
int a,b,x,y,tmpcolinit,tmpcolar,i,j;
a=0;
b=0;
x=0;
y=0;
i=0;
j=0;
tmpcolinit=0;
tmpcolar=0;
char colinit[20];
char colar[20];
printf("%s commence\n",joueur1);
printf("entrez l'un aprËs l'autre les coordonnÈes du pions a deplacer\n");
scanf("%d",&a);
scanf("%d",&colinit);
printf("entrez l'un aprËs l'autre les coordonnÈes d'arrivÈes du pion\n");
scanf("%d",&x);
scanf("%d",&colar);
tmpcolinit=toascii(colinit);
tmpcolar=toascii(colar);
if(tmpcolinit==97)
    {
    b=1;
    }
if(tmpcolinit==98)
    {
    b=2;
    }
if(tmpcolinit==99)
    {
    b=3;
    }
if(tmpcolinit==100)
    {
    b=4;
    }
if(tmpcolinit==101)
    {
    b=5;
    }
if(tmpcolinit==102)
    {
    b=6;
    }
if(tmpcolinit==103)
    {
    b=7;
    }
if(tmpcolinit==104)
    {
    b=8;
    }
if(tmpcolinit==105)
    {
    b=9;
    }
if(tmpcolinit==106)
    {
    b=10;
    }
    
    
if(tmpcolar==97)
    {
    y=1;
    }
if(tmpcolar==98)
    {
    y=2;
    }
if(tmpcolar==99)
    {
    y=3;
    }
if(tmpcolar==100)
    {
    y=4;
    }
if(tmpcolar==101)
    {
    y=5;
    }
if(tmpcolar==102)
    {
    y=6;
    }
if(tmpcolar==103)
    {
    y=7;
    }
if(tmpcolar==104)
    {
    y=8;
    }
if(tmpcolar==105)
    {
    y=9;
    }
if(tmpcolar==106)
    {
    y=10;
    }

do
    {
    printf("deplacement impossible");
    }
while(tab[i][j]=!'.');
//while((tab[i][j]==tab[1][0])||(tab[i][j]==tab[1][2])||(tab[i][j]==tab[1][4])||(tab[i][j]==tab[1][6])||(tab[i][j]==tab[1][8])||(tab[i][j]==tab[2][1])||(tab[i][j]==tab[2][3])||(tab[i][j]==tab[2][5])||(tab[i][j]==tab[2][7])||(tab[i][j]==tab[2][9])||(tab[i][j]==tab[3][0])||(tab[i][j]==tab[3][2])||(tab[i][j]==tab[3][4])||(tab[i][j]==tab[3][6])||(tab[i][j]==tab[3][8])||(tab[i][j]==tab[4][1])||(tab[i][j]==tab[4][3])||(tab[i][j]==tab[4][5])||(tab[i][j]==tab[4][7])||(tab[i][j]==tab[4][9])||(tab[i][j]==tab[5][0])||(tab[i][j]==tab[5][2])||(tab[i][j]==tab[5][4])||(tab[i][j]==tab[5][6])||(tab[i][j]==tab[5][8])||(tab[i][j]==tab[6][1])||(tab[i][j]==tab[6][3])||(tab[i][j]==tab[6][5])||(tab[i][j]==tab[6][7])||(tab[i][j]==tab[6][9])||(tab[i][j]==tab[7][0])||(tab[i][j]==tab[7][2])||(tab[i][j]==tab[7][4])||(tab[i][j]==tab[7][6])||(tab[i][j]==tab[7][8])||(tab[i][j]==tab[8][1])||(tab[i][j]==tab[8][3])||(tab[i][j]==tab[8][5])||(tab[i][j]==tab[8][7])||(tab[i][j]==tab[8][9])||(tab[i][j]==tab[9][0])||(tab[i][j]==tab[9][2])||(tab[i][j]==tab[9][4])||(tab[i][j]==tab[9][6])||(tab[i][j]==tab[9][8])||(tab[i][j]==tab[10][1])||(tab[i][j]==tab[10][3])||(tab[i][j]==tab[10][5])||(tab[i][j]==tab[10][7])||(tab[i][j]==tab[10][9]));

}

/*BOUFFE*/

/*FONCTION PRINCIPALE*/
main()
{
int choix;
choix=0;
char joueur1[20];
char joueur2[20];

printf("\n\t 0 Nouvelle Partie"
       "\n\t 1 Parametres"
       "\n\t 2 Regles du jeu"
       "\n\t 3 Quitter");
printf("\nEntrez votre choix\n");
scanf("%d",&choix);
switch(choix)
    {
    case 0:
        {
        lancement_jeu (joueur1,joueur2);
        affichage_damier ();
        //deplacement (joueur1,joueur2);
        }
        break;
    case 1:printf("merci\n");
        break;
    case 2:printf("Vous devez éliminer le pions de votre adversaire en vous deplaçant en diagonale vers l'avant. Le seul deplacement vers l'arrière qui est autorisé est celui vous permettra de de prendre un pion adverse.\n");
        break;
    case 3:printf("Au revoir\n");
        break;
    default:printf("\t Choix non valide, relancez le jeu\n");
    }
}
 
STOOOOOOOOOOOOOOP !!!

déjà il faut que tu sépare tout en plusieurs fichiers dans lesquels tu mets des fonctions que tu appelles ensuite dans un main.c, jamais mettre tout d'un coup comme ça !!

ensuite, si je suis un prof, et que je vois une ligne comme ça :
Bloc de code:
//while((tab[i][j]==tab[1][0])||(tab[i][j]==tab[1][2])||(tab[i][j]==tab[1][4])||(tab[i][j]==tab[1][6])||(tab[i][j]==tab[1][8])||(tab[i][j]==tab[2][1])||(tab[i][j]==tab[2][3])||(tab[i][j]==tab[2][5])||(tab[i][j]==tab[2][7])||(tab[i][j]==tab[2][9])||(tab[i][j]==tab[3][0])||(tab[i][j]==tab[3][2])||(tab[i][j]==tab[3][4])||(tab[i][j]==tab[3][6])||(tab[i][j]==tab[3][8])||(tab[i][j]==tab[4][1])||(tab[i][j]==tab[4][3])||(tab[i][j]==tab[4][5])||(tab[i][j]==tab[4][7])||(tab[i][j]==tab[4][9])||(tab[i][j]==tab[5][0])||(tab[i][j]==tab[5][2])||(tab[i][j]==tab[5][4])||(tab[i][j]==tab[5][6])||(tab[i][j]==tab[5][8])||(tab[i][j]==tab[6][1])||(tab[i][j]==tab[6][3])||(tab[i][j]==tab[6][5])||(tab[i][j]==tab[6][7])||(tab[i][j]==tab[6][9])||(tab[i][j]==tab[7][0])||(tab[i][j]==tab[7][2])||(tab[i][j]==tab[7][4])||(tab[i][j]==tab[7][6])||(tab[i][j]==tab[7][8])||(tab[i][j]==tab[8][1])||(tab[i][j]==tab[8][3])||(tab[i][j]==tab[8][5])||(tab[i][j]==tab[8][7])||(tab[i][j]==tab[8][9])||(tab[i][j]==tab[9][0])||(tab[i][j]==tab[9][2])||(tab[i][j]==tab[9][4])||(tab[i][j]==tab[9][6])||(tab[i][j]==tab[9][8])||(tab[i][j]==tab[10][1])||(tab[i][j]==tab[10][3])||(tab[i][j]==tab[10][5])||(tab[i][j]==tab[10][7])||(tab[i][j]==tab[10][9]));
Je n'essaye même pas de lire le code, je met ZÉRO !!!

je le fait à la console. j'arive à afficher le damier mais mes problemes sont:
-au niveau du deplacement
-au niveau de la dame
-au niveau de boufer les pions
-au niveau de la sauvegarde
Donc tu n'as pas coder. ça c'est juste de l'affichage de texte, le but d'un TP comme celui là, c'est de te faire réfléchir et chercher : c'est un travail de recherche. (ne demande pas de solution toute faite sur un forum).


:zen:


P.S. : je tiens à préciser que mes remarques ne valent que ce qu'elles valent sachant que je suis simplement en 1ère S.
 
des fichiers .h c'est ça?
c'est facile pour toi mais moi a part du PHP et du Javascript je n'ai jamais fait de C avant cette année. si tu peux m'aider ce serait sympa.
 
Mouais, je pense qu'il te manque de sérieuses bases pour réaliser un jeu de dames visiblement. Et le faire n'importe comment sans ces bases peut donner de mauvaises habitudes.

Le prof devrait encadrer le projet, donner par exemple les *.h et vous faire implémenter les fonctions, où bien commencer par des projets plus petits. Enfin vu la date, ce n'est surement pas le premier projet de l'année, peut-être que le prof a bien pensé ça.

Bonne m****, pus que 5 jours :up:
 
tput te permet de déplacer ton curseur

mais comme dirait BeNBiBiFoKe il ya du boulot je suis pas très optimiste sur la réussite de ta mission
car le code que tu as fourni est kilométrique pense objet et method
tu déroules des tests qui pourrait tenir en 5 lignes dans une methode

tu imagines le nombre de possibilités de ta matrice ?
car c'est ca que le tp te demande build a matrix

et je crois que tu n'as pas vu cela
au lieu de le finir j'essayerai de coder une matrice propre

au moins ton prof même si c'est pas fini pourra dire "ha tiens il a compris"
et ça limitera les dégats de ta note

et ça sert à rien de dire je suis largé en fin d'année
fallait en parler avec ton prof dès le début au lieu de crier après avoir coulé

http://www-rocq.inria.fr/who/Anne.Canteaut/COURS_C/

pour l'instant tu peux toujours

participer à

http://www.ioccc.org/

Bloc de code:
#define L (y
#define M 640,480
#define N NULL
#define O GL_DIFFUSE , i
#define P glCallList(u);
#define T glTexCoord2i
#define U glLightfv(GL_LIGHT0,
#define V R(); glVertex3i(c,m,n);
#define X GL_TEXTURE_2D
#define Z(x) G; x=G; x=x<50-(x==59); 

void Y()
{ { { { { { { { { { { { { { { {
                               
  { {     { { {   { { {   { { {
      {   {   {   {   {   {    
  { {     {   {   {   {     { {
  {       {   {   {   {       {
  { { {   { { ;   { } }   } } }
                               
                               
  }   } } }     }     }     }  
  }   }   }   }     }     }    
  }   }   }   }     }     }    
  }   }   }   }     }     }    
  }   } } }     }     }     }  
                               
} } } } } } } } } } } } } } } }

void Q()
{ { ; { { { {   {     {   { {
  { {     {         {     { {
{   { {   { {               {
; { { } } } } }   }     }   }
} ; }   } }   }   } }   } } }
} }     }         }     } }   



         FILE *F; int u,t,l,m,n,x=0,a=0,b[]={ GLX_DOUBLEBUFFER,
           GLX_RGBA , GLX_DEPTH_SIZE , 16, None},o,n,c ; void R() {
         Z(c); Z(m); Z(n); } int main( int _, char **A) { char   f[
      BUFSIZ ] ;  GLXContext r  ; XVisualInfo * v ; Display     *y; 
    XEvent e ; GLfloat g=0, h=10, i[ ]= { 1,1, 1, 1, 5,5,       100
     ,0, .6, .6, .6 ,1 } ; XSetWindowAttributes s; GLubyte          j[1
   <<10] ; Window w; if(! L= XOpenDisplay ( N ) ) ) E(1)            ;if
                                    ( !
glXQueryExtension L , N , N ) ) E (2); v=glXChooseVisual            L ,
DefaultScreen (y ) , b  ) ; s.colormap = XCreateColormap            L ,
RootWindow (y,v -> screen), v -> visual, AllocNone ); if            (!(
r= glXCreateContext L, v, N, 1) ) ) E (3) ; strcpy(f, *A            ) ;  
s.event_mask=KeyPressMask; strcat(f,".c"); F=fopen(f,"r"            ) ; 
w= XCreateWindow L, RootWindow( y, v -> screen ), M , M,            0,v
->depth,InputOutput, v->visual , CWColormap|CWEventMask,            &s)
;glXMakeCurrent L , w , r ); H GL_DEPTH_TEST ); if ( ! F            )E(
4 ) ; glShadeModel ( GL_SMOOTH ) ; while ( a != 89 ) a =            G ; 
G; G ; glGenTextures( 1, & t ); while ( x< 1024 ) { G; a            =G;
j[ x++ ] = 128; j[ x++ ] = 128 & - ( a<33 ); j [ x ]= j[            x-1
]; x++; j[x++] =-1;} glBindTexture(X,t); glTexParameteri            (X,
GL_TEXTURE_MIN_FILTER , GL_NEAREST ) ;   glTexImage2D( X        ,0,
GL_RGBA, 16 ,  16 , 0 ,  GL_RGBA, GL_UNSIGNED_BYTE , j )         ; J 
GL_PROJECTION ) ; gluPerspective( 60 , 1.333 , 1 ,  100)            ; J 
GL_MODELVIEW); u=glGenLists(1); glNewList(u,GL_COMPILE);        H X
) ; while ( a != 81 ) a = G ; G ; G ; for (x=0; x<6; x++        ) {
glBegin(GL_QUADS); R(); glNormal3f( c, m,n); T(1,1); V T            (1,
0  )  ;  V  T (  0  , 0 ) ; V T( 0 , 1 ) ;  V  glEnd ( )        ; } 
glEndList( ) ; XMapWindow L , w ) ; c = 0; for ( ; ; ) {        if( 
XPending L ) ) { XNextEvent L , &e ) ; if((XLookupKeysym        ( (
XKeyEvent *)&e,0))&1<<5){ h=10; i[c]=!i[c]; c++; c&=3; }           else        
E(0)} glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT          ) ;  
glLoadIdentity(); gluLookAt ( -2 ,0 ,5 ,0,0 ,0,0 ,0 ,1 )        ; H 
GL_LIGHTING); H GL_LIGHT0 ); U GL_POSITION, i + 4); U O)      ; U 
GL_SPECULAR,i); glLightModelfv( GL_LIGHT_MODEL_AMBIENT,i    +8)
; I GL_AMBIENT, i+8); I O + 8 ) ; glRotatef( g, 1, 1, 1)  ; P 
glTranslatef(-h,0,0); P usleep (4000); g+=.07*x; if (g>360) 
g-=360.0; h-=x /100.0; glFlush(); glXSwapBuffers L ,w);} 

l: 
return 0; 
}
 
Salut.

Petite question au passage, tu dois gérer les vraies règles du jeu de dames ?
Avec prise de pions multiple et distinction entre pion (mouvements limités) et dame (mouvements sans contrainte) ?

Pour la génération de ton plateau, j'ai pas bien compris avec quoi tu le remplis ('N' pour noir, 'B' pour blanc, '.' pour vide, mais 'v' et 'a').

@+
iota