aide pour resoudre un pg en langage C

الموضوع في 'لغات البرمجة' بواسطة alioss2, بتاريخ ‏12 جانفي 2008.

  1. alioss2

    alioss2 عضو

    إنضم إلينا في:
    ‏22 ديسمبر 2007
    المشاركات:
    83
    الإعجابات المتلقاة:
    8
      12-01-2008 13:02
    :besmellah1:

    :wlcm:
    svp la resolution de se programme en langage C
    Jeu des Cavaliers
    Le but de ce projet est de réaliser le jeu dit des « cavaliers ».
    Ce jeu se joue sur un échiquier rectangulaire (dont les dimensions sont N par P), et consiste à animer une pièce poursuivie par une autre pièce. Les deux pièces partent de deux angles «diamétralement » opposés (par exemple le coin haut gauche et le coin bas droit), le poursuivant cherchant à rattraper l’autre, le poursuivi essayant de lui échapper. Une pièce ne peut pas passer sur une case déjà utilisée par elle-même ou par la pièce adverse. Le poursuivant gagne s’il arrive à se déplacer sur la case actuellement occupée par son adversaire, ou s’il arrive à bloquer celui-ci alors que lui-même dispose encore d’une certaine liberté de manoeuvre (il peut effectuer au moins trois déplacements avant d’être bloqué). De même, le poursuivi gagne si le poursuivant se retrouve bloqué alors que lui-même dispose de cette même liberté de manoeuvre (il peut effectuer au moins trois déplacements avant d’être bloqué). La partie est nulle dans tous les autres cas.
    Dans une première version du jeu, un cavalier blanc est poursuivi par un cavalier noir. Dans une seconde version du jeu (à faire s’il vous reste du temps), le poursuivant est un roi. Les pièces en question (cavalier ou roi) obéissent aux règles de déplacement propres au jeu d’échec.
    Projet
    Le projet proposé consiste à programmer certaines procédures permettant de disposer des modes de jeu suivants :
    1. Le programme gère les déplacements des deux pièces, affichant la configuration de l’échiquier après chaque déplacement de l’une d’entre elles.
    2. Le programme gère les déplacements du poursuivi, et demande, en mode interactif, les déplacements du poursuivant à l’utilisateur.
    3. Le programme gère les déplacements du poursuivant, et demande, en mode interactif, les déplacements du poursuivi à l’utilisateur. Réfléchir, bien entendu, à une programmation permettant de prendre en compte les deux versions (cavalier contre cavalier, ou roi contre cavalier) du jeu.
    1000merci
    :kiss:
     
  2. rexxar

    rexxar عضو فعال

    إنضم إلينا في:
    ‏19 ديسمبر 2007
    المشاركات:
    346
    الإعجابات المتلقاة:
    44
      13-01-2008 08:52
    ici on ne donne pas de solution mon frére
    si tu veut on peut corriger votre essai sur ce programme
    on plus c'est un programme trés facile
     
  3. alioss2

    alioss2 عضو

    إنضم إلينا في:
    ‏22 ديسمبر 2007
    المشاركات:
    83
    الإعجابات المتلقاة:
    8
      13-01-2008 14:04
    pa de problem mon ami et merci de votre aide
    :satelite:
     
  4. anis-soft

    anis-soft عضو

    إنضم إلينا في:
    ‏9 أفريل 2007
    المشاركات:
    835
    الإعجابات المتلقاة:
    134
      16-01-2008 02:13
    Bon mon ami voila votre demmende

    Mais c ++ et je vais essyer avec le C


    كود (text):
     
    #include<iostream.h>
    #include<stdio.h>
     
    [COLOR=#0000ff]struct[/COLOR] liste
    {
    [COLOR=#0000ff]int[/COLOR] t[40];
    [COLOR=#0000ff]int[/COLOR] nb; [COLOR=#008000]//nombre de cases occupées dans chaque liste[/COLOR]
    **;
     
    [COLOR=#0000ff]struct[/COLOR] joueur
    {
    [COLOR=#0000ff]char[/COLOR] nom[10];
    liste l,lp,lc,ld,lr,lf,lt,ltot;
    [COLOR=#008000]//lp est la liste des pions, lc la liste des cavaliers, ...[/COLOR]
    [COLOR=#008000]//ltot regroupe toutes les listes[/COLOR]
    [COLOR=#008000]//l sert de liste des coups possibles dans les fonctions[/COLOR]
    **;
     
    [COLOR=#0000ff]void[/COLOR] presente(joueur &j1,joueur &j2)
    {
    cout<<"[COLOR=#8b0000]Joueur 1, tape ton nom: [/COLOR]";cin>>j1.nom;
    cout<<"[COLOR=#8b0000]Joueur 2, tape ton nom: [/COLOR]";cin>>j2.nom;
    **
     
    [COLOR=#0000ff]int[/COLOR] saisir()
    {
    [COLOR=#0000ff]char[/COLOR] t[5];
    [COLOR=#0000ff]int[/COLOR] x,y;
    [COLOR=#0000ff]bool[/COLOR] valid;
    [COLOR=#0000ff]do[/COLOR]{
    valid=[COLOR=#0000ff]true[/COLOR];
    cout<<"[COLOR=#8b0000] case: [/COLOR]";
    cin>>t;
    [COLOR=#0000ff]if[/COLOR] (!(t[0]>='A' && t[0]<='H')) valid=[COLOR=#0000ff]false[/COLOR];
    [COLOR=#0000ff]if[/COLOR] (!(t[1]>='1' && t[1]<='8')) valid=[COLOR=#0000ff]false[/COLOR];
    [COLOR=#008000]//non valide si la case n'est pas comprise entre A1 et H8[/COLOR]
    [COLOR=#0000ff]if[/COLOR] (t[2]!='\0') valid=[COLOR=#0000ff]false[/COLOR];
    [COLOR=#008000]//ou s'il y a plus de 2 caractères tapés[/COLOR]
    [COLOR=#0000ff]if[/COLOR] (valid==[COLOR=#0000ff]false[/COLOR]) cout<<"[COLOR=#8b0000]Case non valide![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (valid==[COLOR=#0000ff]false[/COLOR]);
    y=(t[1]-'1')*8;
    x=t[0]-'A';
    x=x+y;
    [COLOR=#008000]//on convertit la saisie en un entier compris entre 0 et 63[/COLOR]
    [COLOR=#0000ff]return[/COLOR] x;
    **
     
    [COLOR=#0000ff]void[/COLOR] init_liste(liste &l)
    {
    l.nb=0;
    **
     
    [COLOR=#0000ff]void[/COLOR] ajoute([COLOR=#0000ff]int[/COLOR] i,liste &l)
    [COLOR=#008000]//ajoute une case donnée à une liste donnée[/COLOR]
    {
    [COLOR=#0000ff]if[/COLOR] (i>=0 && i<=63)
    {
    l.t[l.nb]=i;
    l.nb++;
    **
    **
     
    [COLOR=#0000ff]void[/COLOR] supprime([COLOR=#0000ff]int[/COLOR] n,liste &l)
    [COLOR=#008000]//supprime une case donnée d'une liste donnée[/COLOR]
    {
    [COLOR=#0000ff]int[/COLOR] i,numero=l.nb;
    [COLOR=#0000ff]for[/COLOR] (i=0;i<l.nb;i++)
    {
    [COLOR=#0000ff]if[/COLOR] (n==l.t[i]) numero=i;
    **
    [COLOR=#0000ff]for[/COLOR] (i=numero;i<l.nb;i++) l.t[i]=l.t[i+1];
    [COLOR=#0000ff]if[/COLOR] (numero!=l.nb) l.nb--;
    **
     
    [COLOR=#0000ff]void[/COLOR] aff_case([COLOR=#0000ff]int[/COLOR] n)
    {
    [COLOR=#0000ff]if[/COLOR] (n>=0 && n<=63)
    {
    [COLOR=#0000ff]int[/COLOR] y;
    [COLOR=#0000ff]char[/COLOR] x;
    y=n/8+1;
    x=n-8*(y-1)+65;
    cout<<x<<y;
    **
    **
     
    [COLOR=#0000ff]void[/COLOR] affiche(liste l)
    {
    [COLOR=#0000ff]int[/COLOR] i;
    [COLOR=#0000ff]for[/COLOR] (i=0;i<l.nb;i++)
    {
    aff_case(l.t[i]);
    cout<<"";
    **
    **
     
    [COLOR=#0000ff]int[/COLOR] test([COLOR=#0000ff]int[/COLOR] n,liste l)
    [COLOR=#008000]//teste si une case donnée est dans une liste donnée[/COLOR]
    [COLOR=#008000]//renvoie l'indice de la case dans la liste si elle est trouvée[/COLOR]
    [COLOR=#008000]//renvoie -1 sinon[/COLOR]
    {
    [COLOR=#0000ff]int[/COLOR] i;
    [COLOR=#0000ff]for[/COLOR] (i=0;i<l.nb;i++)
    {
    [COLOR=#0000ff]if[/COLOR] (l.t[i]==n) [COLOR=#0000ff]return[/COLOR] i;
    **
    [COLOR=#0000ff]return[/COLOR] -1;
    **
     
    [COLOR=#0000ff]int[/COLOR] cavalier(joueur &j1,joueur &j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,j,n,z=1;
    init_liste(j1.l);
    cout<<"[COLOR=#8b0000]Cavalier[/COLOR]"<<endl;
    [COLOR=#0000ff]do[/COLOR]{
    n=saisir();
    i=test(n,j1.lc);
    [COLOR=#008000]//la case saisie est-elle dans la liste des cavaliers?[/COLOR]
    [COLOR=#0000ff]if[/COLOR] (i<0) cout<<"[COLOR=#8b0000]Le cavalier n'existe pas![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (i<0);
     
    [COLOR=#0000ff]int[/COLOR] y,dir1,dir2,dir3,dir4,dir5,dir6,dir7,dir8;
    [COLOR=#0000ff]char[/COLOR] x;
    [COLOR=#008000]//x est la lettre de la case, y son numéro[/COLOR]
    [COLOR=#008000]//dir1, dir2, ... sont les différentes directions possibles[/COLOR]
    dir1=n+17;dir2=n+10;dir3=n-6;dir4=n-15;
    dir5=n-17;dir6=n-10;dir7=n+6;dir8=n+15;
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]if[/COLOR] (x=='A') [COLOR=#008000]//si le cavalier est dans la colonne A, ...[/COLOR]
    {dir5=dir5+80;dir6=dir6+80;dir7=dir7+80;dir8=dir8+80;**
    [COLOR=#0000ff]if[/COLOR] (x=='B') [COLOR=#008000]//si le cavalier est dans la colonne B, ...[/COLOR]
    {dir6=dir6+80;dir7=dir7+80;**
    [COLOR=#0000ff]if[/COLOR] (x=='G') [COLOR=#008000]//...[/COLOR]
    {dir2=dir2+80;dir3=dir3+80;**
    [COLOR=#0000ff]if[/COLOR] (x=='H')
    {dir1=dir1+80;dir2=dir2+80;dir3=dir3+80;dir4=dir4+80;**
    [COLOR=#0000ff]if[/COLOR] (y==1) [COLOR=#008000]//s'il est dans la ligne 1, ...[/COLOR]
    {dir3=dir3+80;dir4=dir4+80;dir5=dir5+80;dir6=dir6+80;**
    [COLOR=#0000ff]if[/COLOR] (y==2) [COLOR=#008000]//...[/COLOR]
    {dir4=dir4+80;dir5=dir5+80;**
    [COLOR=#0000ff]if[/COLOR] (y==7)
    {dir1=dir1+80;dir8=dir8+80;**
    [COLOR=#0000ff]if[/COLOR] (y==8)
    {dir1=dir1+80;dir2=dir2+80;dir7=dir7+80;dir8=dir8+80;**
     
    ajoute(dir1,j1.l);ajoute(dir2,j1.l);ajoute(dir3,j1.l);ajoute(dir4,j1.l);
    ajoute(dir5,j1.l);ajoute(dir6,j1.l);ajoute(dir7,j1.l);ajoute(dir8,j1.l);
    [COLOR=#008000]//on ajoute les coups possibles à la liste l[/COLOR]
     
    cout<<"[COLOR=#8b0000] vers la[/COLOR]";
    n=saisir();
    j=test(n,j1.l);
    [COLOR=#008000]//la case de destination est-elle un coup possible?[/COLOR]
    [COLOR=#0000ff]if[/COLOR] (j<0) z=0;
    [COLOR=#0000ff]else[/COLOR] [COLOR=#0000ff]if[/COLOR] (test(n,j1.ltot)>=0) z=0;
    [COLOR=#008000]//z=0 si le coup est impossible ou la case déjà prise par j1[/COLOR]
    [COLOR=#0000ff]else[/COLOR] j1.lc.t[i]=n;
    [COLOR=#008000]//sinon la case écrase la précédente dans la liste[/COLOR]
     
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j2.ltot.nb;i++) [COLOR=#0000ff]if[/COLOR] (n==j2.ltot.t[i] && z==1)
    {
    supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
    supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
    **
    [COLOR=#008000]//si la cavalier prend une pièce de j2, on la supprime[/COLOR]
    [COLOR=#0000ff]return[/COLOR] z;
    [COLOR=#008000]//renvoie 1 si le coup a été effectué[/COLOR]
    [COLOR=#008000]//renvoie 0 sinon[/COLOR]
    **
     
    [COLOR=#0000ff]int[/COLOR] dame(joueur &j1,joueur &j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,j,k,n,r,z=1;
    init_liste(j1.l);
    cout<<"[COLOR=#8b0000]Dame[/COLOR]"<<endl;
    [COLOR=#0000ff]do[/COLOR]{
    n=saisir();
    i=test(n,j1.ld);
    [COLOR=#0000ff]if[/COLOR] (i<0) cout<<"[COLOR=#8b0000]La dame n'existe pas![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (i<0);
     
    [COLOR=#0000ff]int[/COLOR] y,d1=n,d2=n,d3=n,d4=n,d5=n,d6=n,d7=n,d8=n;
    [COLOR=#0000ff]char[/COLOR] x;
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](y!=8){r=0;d1=d1+8;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d1==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d1,j1.l);y=d1/8+1;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](y!=8 && x!='H'){r=0;d2=d2+9;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d2==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='H'){r=0;d3++;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d3==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d3,j1.l);y=d3/8+1;x=d3-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='H' && y!=1){r=0;d4=d4-7;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d4==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;**
    y=n/8+1;
    [COLOR=#0000ff]while[/COLOR](y!=1){r=0;d5=d5-8;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d5==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d5==j2.ltot.t[k]){r=1;ajoute(d5,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d5,j1.l);y=d5/8+1;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='A' && y!=1){r=0;d6=d6-9;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d6==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d6=j2.ltot.t[k]){r=1;ajoute(d6,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d6,j1.l);y=d6/8+1;x=d6-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='A'){r=0;d7--;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d7==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d7==j2.ltot.t[k]){r=1;ajoute(d7,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d7,j1.l);y=d7/8+1;x=d7-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='A' && y!=8){r=0;d8=d8+7;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d8==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d8==j2.ltot.t[k]){r=1;ajoute(d8,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d8,j1.l);y=d8/8+1;x=d8-8*(y-1)+65;**
    [COLOR=#008000]//pour chaque direction, on ajoute à la liste toutes les cases[/COLOR]
    [COLOR=#008000]//jusqu'à ce qu'on rencontre une case occupée ou le bord du jeu[/COLOR]
     
    cout<<"[COLOR=#8b0000] vers la[/COLOR]";
    n=saisir();
    j=test(n,j1.l);
    [COLOR=#0000ff]if[/COLOR] (j<0) z=0;
    [COLOR=#0000ff]else[/COLOR] j1.ld.t[i]=n;
     
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j2.ltot.nb;i++) [COLOR=#0000ff]if[/COLOR] (n==j2.ltot.t[i] && z==1)
    {
    supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
    supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
    **
    [COLOR=#0000ff]return[/COLOR] z;
    **
     
    [COLOR=#0000ff]int[/COLOR] roi(joueur &j1,joueur &j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,j,n,z=1;
    init_liste(j1.l);
    cout<<"[COLOR=#8b0000]Roi[/COLOR]"<<endl;
    [COLOR=#0000ff]do[/COLOR]{
    n=saisir();
    i=test(n,j1.lr);
    [COLOR=#0000ff]if[/COLOR] (i<0) cout<<"[COLOR=#8b0000]Le roi n'existe pas![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (i<0);
     
    [COLOR=#0000ff]int[/COLOR] y,d1,d2,d3,d4,d5,d6,d7,d8;
    [COLOR=#0000ff]char[/COLOR] x;
    d1=n+8;d2=n+9;d3=n+1;d4=n-7;
    d5=n-8;d6=n-9;d7=n-1;d8=n+7;
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]if[/COLOR] (x=='A')
    {d6=d6+80;d7=d7+80;d8=d8+80;**
    [COLOR=#0000ff]if[/COLOR] (x=='H')
    {d2=d2+80;d3=d3+80;d4=d4+80;**
    [COLOR=#0000ff]if[/COLOR] (y==1)
    {d4=d4+80;d5=d5+80;d6=d6+80;**
    [COLOR=#0000ff]if[/COLOR] (y==8)
    {d1=d1+80;d2=d2+80;d8=d8+80;**
     
    ajoute(d1,j1.l);ajoute(d2,j1.l);
    ajoute(d3,j1.l);ajoute(d4,j1.l);
    ajoute(d5,j1.l);ajoute(d6,j1.l);
    ajoute(d7,j1.l);ajoute(d8,j1.l);
     
    cout<<"[COLOR=#8b0000] vers la[/COLOR]";
    n=saisir();
    j=test(n,j1.l);
    [COLOR=#0000ff]if[/COLOR] (j<0) z=0;
    [COLOR=#0000ff]else[/COLOR] [COLOR=#0000ff]if[/COLOR] (test(n,j1.ltot)>=0) z=0;
    [COLOR=#0000ff]else[/COLOR] j1.lr.t[i]=n;
     
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j2.ltot.nb;i++) [COLOR=#0000ff]if[/COLOR] (n==j2.ltot.t[i] && z==1)
    {
    supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
    supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
    **
    [COLOR=#0000ff]return[/COLOR] z;
    **
     
    [COLOR=#0000ff]int[/COLOR] fou(joueur &j1,joueur &j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,j,n,r,k,z=1;
    init_liste(j1.l);
    cout<<"[COLOR=#8b0000]Fou[/COLOR]"<<endl;
    [COLOR=#0000ff]do[/COLOR]{
    n=saisir();
    i=test(n,j1.lf);
    [COLOR=#0000ff]if[/COLOR] (i<0) cout<<"[COLOR=#8b0000]Le fou n'existe pas![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (i<0);
     
    [COLOR=#0000ff]int[/COLOR] y,d1=n,d2=n,d3=n,d4=n;
    [COLOR=#0000ff]char[/COLOR] x;
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](y!=8 && x!='H'){r=0;d1=d1+9;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d1==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d1,j1.l);y=d1/8+1;x=d1-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='H' && y!=1){r=0;d2=d2-7;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d2==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='A' && y!=1){r=0;d3=d3-9;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d3==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d3,j1.l);y=d3/8+1;x=d3-8*(y-1)+65;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='A' && y!=8){r=0;d4=d4+7;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d4==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;**
     
    cout<<"[COLOR=#8b0000] vers la[/COLOR]";
    n=saisir();
    j=test(n,j1.l);
    [COLOR=#0000ff]if[/COLOR] (j<0) z=0;
    [COLOR=#0000ff]else[/COLOR] j1.lf.t[i]=n;
     
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j2.ltot.nb;i++) [COLOR=#0000ff]if[/COLOR] (n==j2.ltot.t[i] && z==1)
    {
    supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
    supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
    **
    [COLOR=#0000ff]return[/COLOR] z;
    **
     
    [COLOR=#0000ff]int[/COLOR] tour(joueur &j1,joueur &j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,j,n,r,k,z=1;
    init_liste(j1.l);
    cout<<"[COLOR=#8b0000]Tour[/COLOR]"<<endl;
    [COLOR=#0000ff]do[/COLOR]{
    n=saisir();
    i=test(n,j1.lt);
    [COLOR=#0000ff]if[/COLOR] (i<0) cout<<"[COLOR=#8b0000]La tour n'existe pas![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (i<0);
     
    [COLOR=#0000ff]int[/COLOR] y,d1=n,d2=n,d3=n,d4=n;
    [COLOR=#0000ff]char[/COLOR] x;
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](y!=8){r=0;d1=d1+8;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d1==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d1==j2.ltot.t[k]){r=1;ajoute(d1,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d1,j1.l);y=d1/8+1;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='H'){r=0;d2++;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d2==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d2==j2.ltot.t[k]){r=1;ajoute(d2,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d2,j1.l);y=d2/8+1;x=d2-8*(y-1)+65;**
    y=n/8+1;
    [COLOR=#0000ff]while[/COLOR](y!=1){r=0;d3=d3-8;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d3==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d3==j2.ltot.t[k]){r=1;ajoute(d3,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d3,j1.l);y=d3/8+1;**
    y=n/8+1;x=n-8*(y-1)+65;
    [COLOR=#0000ff]while[/COLOR](x!='A'){r=0;d4--;[COLOR=#0000ff]for[/COLOR](k=0;k<j1.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d4==j1.ltot.t[k])r=1;[COLOR=#0000ff]for[/COLOR](k=0;k<j2.ltot.nb;k++)[COLOR=#0000ff]if[/COLOR](d4==j2.ltot.t[k]){r=1;ajoute(d4,j1.l);**[COLOR=#0000ff]if[/COLOR](r==1)[COLOR=#0000ff]break[/COLOR];ajoute(d4,j1.l);y=d4/8+1;x=d4-8*(y-1)+65;**
     
    cout<<"[COLOR=#8b0000] vers la[/COLOR]";
    n=saisir();
    j=test(n,j1.l);
    [COLOR=#0000ff]if[/COLOR] (j<0) z=0;
    [COLOR=#0000ff]else[/COLOR] j1.lt.t[i]=n;
     
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j2.ltot.nb;i++) [COLOR=#0000ff]if[/COLOR] (n==j2.ltot.t[i] && z==1)
    {
    supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
    supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
    **
    [COLOR=#0000ff]return[/COLOR] z;
    **
     
    [COLOR=#0000ff]int[/COLOR] pion(joueur &j1,joueur &j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,j,n,z=1;
    init_liste(j1.l);
    cout<<"[COLOR=#8b0000]Pion[/COLOR]"<<endl;
    [COLOR=#0000ff]do[/COLOR]{
    n=saisir();
    i=test(n,j1.lp);
    [COLOR=#0000ff]if[/COLOR] (i<0) cout<<"[COLOR=#8b0000]Le pion n'existe pas![/COLOR]"<<endl;
    **[COLOR=#0000ff]while[/COLOR] (i<0);
     
    [COLOR=#0000ff]int[/COLOR] y,d1;
    y=n/8+1;
    d1=n+8;ajoute(d1,j1.l);
    [COLOR=#0000ff]if[/COLOR] (y==2) {d1=d1+8;ajoute(d1,j1.l);**
    d1=n-8;ajoute(d1,j1.l);
    [COLOR=#0000ff]if[/COLOR] (y==7) {d1=d1-8;ajoute(d1,j1.l);**
    d1=n+9;ajoute(d1,j1.l);
    d1=n-9;ajoute(d1,j1.l);
    d1=n+7;ajoute(d1,j1.l);
    d1=n-7;ajoute(d1,j1.l);
     
    cout<<"[COLOR=#8b0000] vers la[/COLOR]";
    n=saisir();
    j=test(n,j1.l);
    [COLOR=#0000ff]if[/COLOR] (j<0) z=0;
    [COLOR=#0000ff]else[/COLOR] [COLOR=#0000ff]if[/COLOR] (test(n,j1.ltot)>=0) z=0;
    [COLOR=#0000ff]else[/COLOR] j1.lp.t[i]=n;
     
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j2.ltot.nb;i++) [COLOR=#0000ff]if[/COLOR] (n==j2.ltot.t[i] && z==1)
    {
    supprime(n,j2.lp);supprime(n,j2.lc);supprime(n,j2.ld);
    supprime(n,j2.lr);supprime(n,j2.lf);supprime(n,j2.lt);
    **
    [COLOR=#0000ff]return[/COLOR] z;
    **
     
    [COLOR=#0000ff]void[/COLOR] initializ(joueur &j1,joueur &j2)
    [COLOR=#008000]//initialise les listes de pièces[/COLOR]
    {
    [COLOR=#0000ff]int[/COLOR] i;
    j1.lp.nb=8;j1.lc.nb=2;j1.ld.nb=1;j1.lr.nb=1;j1.lf.nb=2;j1.lt.nb=2;
    j2.lp.nb=8;j2.lc.nb=2;j2.ld.nb=1;j2.lr.nb=1;j2.lf.nb=2;j2.lt.nb=2;
    j1.ld.t[0]=4;j2.ld.t[0]=60;
    j1.lr.t[0]=3;j2.lr.t[0]=59;
    j1.lc.t[0]=1;j1.lc.t[1]=6;j2.lc.t[0]=57;j2.lc.t[1]=62;
    j1.lf.t[0]=2;j1.lf.t[1]=5;j2.lf.t[0]=58;j2.lf.t[1]=61;
    j1.lt.t[0]=0;j1.lt.t[1]=7;j2.lt.t[0]=56;j2.lt.t[1]=63;
    [COLOR=#0000ff]for[/COLOR] (i=0;i<8;i++) j1.lp.t[i]=i+8;
    [COLOR=#0000ff]for[/COLOR] (i=0;i<8;i++) j2.lp.t[i]=i+48;
    **
     
    [COLOR=#0000ff]void[/COLOR] totaliz(joueur &j1)
    [COLOR=#008000]//regroupe toutes les listes de pièces dans la liste ltot du joueur[/COLOR]
    {
    [COLOR=#0000ff]int[/COLOR] i,j=0;
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j1.lp.nb;i++) {j1.ltot.t[j]=j1.lp.t[i];j++;**
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j1.lc.nb;i++) {j1.ltot.t[j]=j1.lc.t[i];j++;**
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j1.ld.nb;i++) {j1.ltot.t[j]=j1.ld.t[i];j++;**
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j1.lr.nb;i++) {j1.ltot.t[j]=j1.lr.t[i];j++;**
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j1.lf.nb;i++) {j1.ltot.t[j]=j1.lf.t[i];j++;**
    [COLOR=#0000ff]for[/COLOR] (i=0;i<j1.lt.nb;i++) {j1.ltot.t[j]=j1.lt.t[i];j++;**
    j1.ltot.nb=j;
    **
     
    [COLOR=#0000ff]int[/COLOR] choix_menu()
    {
    [COLOR=#0000ff]int[/COLOR] n;
    cout<<endl;
    cout<<"[COLOR=#8b0000]Choisis ton coup!\n[/COLOR]";
    cout<<"[COLOR=#8b0000]1. coup de cavalier\n[/COLOR]";
    cout<<"[COLOR=#8b0000]2. coup de dame\n[/COLOR]";
    cout<<"[COLOR=#8b0000]3. coup de roi\n[/COLOR]";
    cout<<"[COLOR=#8b0000]4. coup de fou\n[/COLOR]";
    cout<<"[COLOR=#8b0000]5. coup de tour\n[/COLOR]";
    cout<<"[COLOR=#8b0000]6. coup de pion\n[/COLOR]";
    cout<<"[COLOR=#8b0000]7. quitter\n[/COLOR]";
    cout<<"[COLOR=#8b0000]Ton choix: [/COLOR]";cin>>n;
    cout<<endl;
    [COLOR=#0000ff]return[/COLOR] n;
    **
     
    [COLOR=#0000ff]void[/COLOR] echiquier(joueur j1,joueur j2)
    {
    [COLOR=#0000ff]int[/COLOR] i,k,x,r;
    [COLOR=#0000ff]char[/COLOR] j;
    cout<<"[COLOR=#8b0000] ________________________________________________[/COLOR]"<<endl;
    [COLOR=#0000ff]for[/COLOR] (i=8;i>0;i--) [COLOR=#008000]//boucle parcourant les lignes[/COLOR]
    {
    cout<<"[COLOR=#8b0000]\xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3[/COLOR]"<<endl;
     
    [COLOR=#0000ff]for[/COLOR] (j='A';j<='H';j++) [COLOR=#008000]//boucle parcourant les colonnes[/COLOR]
    {
    r=0;
    x=(j-'A')+(i-1)*8; [COLOR=#008000]//x prend la valeur de la case[/COLOR]
    cout<<"[COLOR=#8b0000]\xB3 [/COLOR]";
    [COLOR=#0000ff]for[/COLOR](k=0;k<16;k++)
    {
    [COLOR=#0000ff]if[/COLOR] (j1.lp.t[k]==x) {cout<<"[COLOR=#8b0000].[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j1.lc.t[k]==x) {cout<<"[COLOR=#8b0000]\x06[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j1.ld.t[k]==x) {cout<<"[COLOR=#8b0000]\x03[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j1.lr.t[k]==x) {cout<<"[COLOR=#8b0000]\x02[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j1.lf.t[k]==x) {cout<<"[COLOR=#8b0000]\x05[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j1.lt.t[k]==x) {cout<<"[COLOR=#8b0000]\x04[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
     
    [COLOR=#0000ff]if[/COLOR] (j2.lp.t[k]==x) {cout<<"[COLOR=#8b0000]p[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j2.lc.t[k]==x) {cout<<"[COLOR=#8b0000]c[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j2.ld.t[k]==x) {cout<<"[COLOR=#8b0000]d[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j2.lr.t[k]==x) {cout<<"[COLOR=#8b0000]\x01[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j2.lf.t[k]==x) {cout<<"[COLOR=#8b0000]f[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    [COLOR=#0000ff]if[/COLOR] (j2.lt.t[k]==x) {cout<<"[COLOR=#8b0000]t[/COLOR]";r=1;[COLOR=#0000ff]break[/COLOR];**
    **
    [COLOR=#0000ff]if[/COLOR] (r==0) cout<<""; [COLOR=#008000]//s'il n'y a rien dans cette case...[/COLOR]
    cout<<"";
    **
    cout<<"[COLOR=#8b0000]\xB3[/COLOR]"<<i<<endl;
    cout<<"[COLOR=#8b0000]\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3[/COLOR]"<<endl;
    **
    cout<<"[COLOR=#8b0000] A B C D E F G H[/COLOR]"<<endl;
    getc(stdin); [COLOR=#008000]//attend la frappe de la touche ENTREE[/COLOR]
    **
     
    [COLOR=#0000ff]void[/COLOR] menu(joueur j1,joueur j2)
    {
    [COLOR=#0000ff]int[/COLOR] choix,coup=0,j,z=1;
    [COLOR=#008000]//coup est le numéro du coup à jouer[/COLOR]
    [COLOR=#008000]//j est le numéro du joueur dont c'est le tour de jouer[/COLOR]
    initializ(j1,j2);
    [COLOR=#0000ff]do[/COLOR]
    {
    echiquier(j1,j2);
     
    [COLOR=#0000ff]if[/COLOR] (z==1) coup++;
    [COLOR=#008000]//on passe au coup suivant que si le coup précédent[/COLOR]
    [COLOR=#008000]//a été effectué (z=1)[/COLOR]
    [COLOR=#0000ff]if[/COLOR] (coup%2==1) {cout<<"[COLOR=#8b0000]A toi [/COLOR]"<<j1.nom<<"[COLOR=#8b0000]![/COLOR]"<<endl;j=1;**
    [COLOR=#0000ff]else[/COLOR] {cout<<"[COLOR=#8b0000]A toi [/COLOR]"<<j2.nom<<"[COLOR=#8b0000]![/COLOR]"<<endl;j=2;**
     
    totaliz(j1); [COLOR=#008000]//on met à jour les listes totales[/COLOR]
    totaliz(j2); [COLOR=#008000]//des deux joueurs[/COLOR]
     
    choix=choix_menu();
    [COLOR=#0000ff]switch[/COLOR] (choix)
    {
    [COLOR=#0000ff]case[/COLOR] 1:
    [COLOR=#0000ff]if[/COLOR] (j==1) z=cavalier(j1,j2);
    [COLOR=#0000ff]else[/COLOR] z=cavalier(j2,j1);
    [COLOR=#0000ff]break[/COLOR];
    [COLOR=#0000ff]case[/COLOR] 2:
    [COLOR=#0000ff]if[/COLOR] (j==1) z=dame(j1,j2);
    [COLOR=#0000ff]else[/COLOR] z=dame(j2,j1);
    [COLOR=#0000ff]break[/COLOR];
    [COLOR=#0000ff]case[/COLOR] 3:
    [COLOR=#0000ff]if[/COLOR] (j==1) z=roi(j1,j2);
    [COLOR=#0000ff]else[/COLOR] z=roi(j2,j1);
    [COLOR=#0000ff]break[/COLOR];
    [COLOR=#0000ff]case[/COLOR] 4:
    [COLOR=#0000ff]if[/COLOR] (j==1) z=fou(j1,j2);
    [COLOR=#0000ff]else[/COLOR] z=fou(j2,j1);
    [COLOR=#0000ff]break[/COLOR];
    [COLOR=#0000ff]case[/COLOR] 5:
    [COLOR=#0000ff]if[/COLOR] (j==1) z=tour(j1,j2);
    [COLOR=#0000ff]else[/COLOR] z=tour(j2,j1);
    [COLOR=#0000ff]break[/COLOR];
    [COLOR=#0000ff]case[/COLOR] 6:
    [COLOR=#0000ff]if[/COLOR] (j==1) z=pion(j1,j2);
    [COLOR=#0000ff]else[/COLOR] z=pion(j2,j1);
    [COLOR=#0000ff]break[/COLOR];
    **
    **[COLOR=#0000ff]while[/COLOR] (choix!=7);
    **
     
    [COLOR=#0000ff]void[/COLOR] main()
    {
    joueur j1,j2;
    cout<<"[COLOR=#8b0000]Bienvenue dans mon jeu d'echecs pour deux\n\n[/COLOR]";
    presente(j1,j2);
    cout<<endl;
    menu(j1,j2);
    **
     

    anis-soft
     
  5. memos207

    memos207 عضو نشيط

    إنضم إلينا في:
    ‏23 أكتوبر 2007
    المشاركات:
    181
    الإعجابات المتلقاة:
    5
      16-01-2008 21:11
    Si t'as bien compris le backtracking, tu n'aura pas de difficultés à résoudre ce pb
     
  6. alioss2

    alioss2 عضو

    إنضم إلينا في:
    ‏22 ديسمبر 2007
    المشاركات:
    83
    الإعجابات المتلقاة:
    8
      19-01-2008 15:13
    merci bien mon ami :kiss:
     
جاري تحميل الصفحة...

مشاركة هذه الصفحة

جاري تحميل الصفحة...