Aide pour un "jeu de l'oie"

Meric92 Messages postés 27 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 9 avril 2009 - 7 janv. 2007 à 18:25
cs_elantri Messages postés 9 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 1 janvier 2011 - 2 févr. 2009 à 17:06
Bonjour,
Je souhaite faire un jeux de l'oie en C en mode console ... certes c'est moche mais je débute ...
Pour l'instant j'ai fait le bout de code qui suit mais j'ai des problèmes ...
<li>   Dans le switch ... je pense qu'il faut utiliser une autre technique ...</li><li>   Mon random ne marche pas, il me sort toujours un 6</li>Il y a peut etre (sans doute ...) d'autres problèmes mais ce sont je pense les plus importants!
Je code sous DEV-C++ et je crois savoir qu'il y a pas mal de problème par rapport au random, mais je n'ai pas bien compris les réponses

                                                                        

VOILA MON CODE

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define HAUTEUR 14
#define LARGEUR 22

const char CHG=218,TH=196,CHD=191,TV=179,CBD=217,CBG=192,espace=32,pion=2;
int x,y,random,PositionPion=0,i=0;

                                             
                                             
                                              /*Partie prise sur CPPfrance*/
void gotoxy(SHORT x, SHORT y)
{
    COORD coord;
    HANDLE  HCmd;

    coord.X = x;
    coord.Y = y;
    HCmd= GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(HCmd, coord);
}

                                             
                                              /*Dessin du contour du plateau*/
void Plateau()
{
  int indiceL, indiceH;
 
  printf ("%c",CHG);
 
  for (indiceL = 0 ; indiceL <= LARGEUR ; indiceL++)
      printf ("%c", TH);
 
  printf ("%c\n",CHD);
 
  for (indiceH = 0 ; indiceH <= HAUTEUR ; indiceH++)
  {
      printf ("%c",TV);
      for (indiceL = 0 ; indiceL <= LARGEUR ; indiceL++)
      {
          printf ("%c", espace);
      }
      printf ("%c\n",TV);
  }
 
  printf ("%c",CBG);
 
  for (indiceL = 0 ; indiceL <= LARGEUR ; indiceL++)
      printf ("%c", TH);
 
  printf ("%c\n  ",CBD);

  printf ("\n");
 
  Case();
 
}

                                                   
                                                   
                                                    /*Dessin des cases*/
int Case(void)
{
   for (y=1 ; y<HAUTEUR+2 ; y++)
   {
       for (x=6 ; x<=LARGEUR ; x+=6)
       {
           gotoxy(x,y);
           printf ("%c",TV);
       }
   }
  
   for (x=1 ; x<LARGEUR+2 ; x++)
   {
       for (y=4 ; y<=HAUTEUR ; y+=4)
       {
           gotoxy(x,y);
           printf ("%c",TH);
       }
   }
  
   gotoxy(20,20);
}

                                                   
                                                   
                                                   
                                                    /*Simulation du lancé d'un dé*/
int LanceDe()
{
    random = rand()%7;
    printf ("Le resultat du lance est %d\n", random);
    return random;
}
   

                                             /* Logique du jeu de l'oie avec affichage du pion  */
                                             /* Des règles pour chaque cases sont à venir       */
int MvtPion()
{
    do
    {
             LanceDe();
             PositionPion += random;
             switch (PositionPion)
             {
                    case 'PositionPion == 1' :
                    {    
                         gotoxy(3,2);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 2' :
                    {    
                         gotoxy(9,2);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 3' :
                    {    
                         gotoxy(15,2);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 4' :
                    {    
                         gotoxy(21,2);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 5' :
                    {    
                         gotoxy(21,6);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 6' :
                    {    
                         gotoxy(21,10);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 7' :
                    {    
                         gotoxy(21,14);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 8' :
                    {    
                         gotoxy(15,14);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 9' :
                    {    
                         gotoxy(9,14);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 10' :
                    {    
                         gotoxy(3,14);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 11' :
                    {    
                         gotoxy(3,10);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 12' :
                    {    
                         gotoxy(3,6);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 13' :
                    {    
                         gotoxy(9,6);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 14' :
                    {    
                         gotoxy(15,6);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 15' :
                    {    
                         gotoxy(15,10);
                         printf("%c",pion);
                    }
                    case 'PositionPion == 16' :
                    {    
                         gotoxy(9,10);
                         printf("%c",pion);
                    }
                    case 'PositionPion > 16' :
                    {    
                         PositionPion = 16 - (random - (16-(PositionPion - random)));
                         /*Il faut atteindre 16 pile pour gagner,
                         lorsque l'on dépasse, on revient en arriere*/
                        
                         goto case 'PositionPion'; //retour du pion là ou il doit etre
                         printf("%c",pion);
                    }
                    i++; //nombre de lancé écoulé
                    system("PAUSE");
             }
    }
    while ( PositionPion == 16);
    printf ("Vous avez gagne en %d lance", i);
}

int main()
{
    Plateau();
    MvtPion();
    system("PAUSE");
    return 0;
}

Encore pardon pour mon code qui doit etre horrible à lire ... et merci a vous d'etre arrivé jusqu'ici !!
A voir également:

5 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
7 janv. 2007 à 20:09
Pour le rand(), il faut d'abord initialiser le générateur dans main() par exemple :
srand(GetTickCount());
OU
srand((unsigned int)time((time_t*)NULL));

puis faire :
valeur = (rand()%6)+1;

un case de prend pas de chaine mais tu peux faire :
#define positionPion1 1
#define positionPion2 2
(...)
#define positionPion16 16

puis

switch(PositionPion)
{
   case positionPion1:
      break;

   case positionPion2:
      break;

   default:
      break;
}

Ensuite, pas de
case > 16:   // impossible
Met le dans default:

Ensuite pas de goto case   // impossible

Faire un :
PositionPion = valeurCase;
puis retour au switch

A plus.
0