begin process at 2012 05 28 11:22:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Aide pour un "jeu de l'oie"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide pour un "jeu de l'oie"

dimanche 7 janvier 2007 à 18:25:24 | Aide pour un "jeu de l'oie"

Meric92

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 ...
  •    Dans le switch ... je pense qu'il faut utiliser une autre technique ...
  •    Mon random ne marche pas, il me sort toujours un 6
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 !!
dimanche 7 janvier 2007 à 20:09:21 | Re : Aide pour un "jeu de l'oie"

yann_lo_san

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.

dimanche 7 janvier 2007 à 21:39:48 | Re : Aide pour un "jeu de l'oie"

Meric92

Alor déjà je te remercie grandement d'avoir preté attention à mon problème!
En plus tu as pris la peine de bien répondre ... mais quelques points noirs persistent ...
  • Dans le default, comment faire pour revenir au switch sans passer par le début de la boucle ?
  • Comment faire pour éffacer mon "pion" au fur et à mesure qu'il avance ?
  • J'aimerais que l'utilisateur appuie sur une touche pour lancer le random
Sachant que mon code maintenant est le suivant :

do
    {
             LanceDe();
             PositionPion += random;
             switch (PositionPion)
             {
                    case 1 :
                    {    
                         gotoxy(3,2);
                         printf("%c",pion);
                         break;
                    }
                    case 2:
                    {    
                         gotoxy(9,2);
                         printf("%c",pion);
                         break;
                    }
                    case 3 :
                    {    
                         gotoxy(15,2);
                         printf("%c",pion);
                         break;
                    }
                    case 4 :
                    {    
                         gotoxy(21,2);
                         printf("%c",pion);
                         break;
                    }
                    case 5 :
                    {    
                         gotoxy(21,6);
                         printf("%c",pion);
                         break;
                    }
                    case 6 :
                    {    
                         gotoxy(21,10);
                         printf("%c",pion);
                         break;
                    }
                    case 7 :
                    {    
                         gotoxy(21,14);
                         printf("%c",pion);
                         break;
                    }
                    case 8 :
                    {    
                         gotoxy(15,14);
                         printf("%c",pion);
                         break;
                    }
                    case 9 :
                    {    
                         gotoxy(9,14);
                         printf("%c",pion);
                         break;
                    }
                    case 10 :
                    {    
                         gotoxy(3,14);
                         printf("%c",pion);
                         break;
                    }
                    case 11 :
                    {    
                         gotoxy(3,10);
                         printf("%c",pion);
                         break;
                    }
                    case 12 :
                    {    
                         gotoxy(3,6);
                         printf("%c",pion);
                         break;
                    }
                    case 13 :
                    {    
                         gotoxy(9,6);
                         printf("%c",pion);
                         break;
                    }
                    case 14 :
                    {    
                         gotoxy(15,6);
                         printf("%c",pion);
                         break;
                    }
                    case 15 :
                    {    
                         gotoxy(15,10);
                         printf("%c",pion);
                         break;
                    }
                    case 16 :
                    {    
                         gotoxy(9,10);
                         printf("%c",pion);
                         break;
                    }
                    default :
                    {    
                         PositionPion = 16 - (random - (16-(PositionPion - random)));
                         /*Il faut atteindre 16 pile pour gagner,
                         lorsque l'on dépasse, on revient en arriere*/
                        
                         ???????????       //retour du pion là ou il doit etre

                    }
                    i++;  //nombre de lancé écoulé
                    system("PAUSE");
             }
    }while ( PositionPion != 16);
   
    gotoxy (20,20);
    printf ("Vous avez gagne en %d lance\n", i);



Encore mille fois merci et si tu a un bon tuto à me proposer je suis preneur
dimanche 7 janvier 2007 à 22:11:47 | Re : Aide pour un "jeu de l'oie"

yann_lo_san

Le goto case ne marche pas mais le goto vers étiquette oui, tu peux toujours faire :

 switch (PositionPion)
             {
      LABEL_1:
                    case 1 :
                         break;
      LABEL_2:
                    case 2:
                         break; 
      LABEL_3:
                     /* ect... */ 
             } 

// code
goto LABEL_2;
// code

dimanche 7 janvier 2007 à 22:22:51 | Re : Aide pour un "jeu de l'oie"

yann_lo_san

Pour effacer le pion, a chaque avance, tu peux sauver les déplacements précedent dans un tab de COORD par exemple.

COORD g_deplPrec[16] = {0};

void sauveDeplacementPrec(int x, int y, bool effacer = false)
{
   static int coup = 0;

   g_depPrec[coup].x = x;
   g_depPrec[coup].y = y;
   if( effacer )
   {
      gotoxy(x, y);

      putc(' ');
   }
   coup++;
}

lundi 2 février 2009 à 17:06:48 | Re : Aide pour un "jeu de l'oie"

elantri

Bonjour Mon ami je suis Jack de paris .j'ai le meme probleme que toi.
  je dois réaliser le jeu de l'oie .et il me reste que 4 jours pour rendre le travail
 tu peux m'envoyer le code SVP c'est tres urgent
   voici ma boite elantri@hotmail.fr
                              ou
                           elantri@yahoo.fr
                                                                   Merci bk mon cher ami



Cette discussion est classée dans : case, printf, gotoxy, pion, positionpion


Répondre à ce message

Sujets en rapport avec ce message

demande de correction de programme [ par gemini010 ] slt a tous, je dois créer un programme avec differente fonctions et structures permettant de gerer des etudiants ( on doit pouvoir ajouter des enregis Assez Urgent problème de gestion dans les fichiers [ par bugs2600 ] Salut,Je suis en train de faire un programme de gestion de fichier mais j'ai un problème pour faire une fonction de suppression des menbres.Voici ce q interruption avec dev-cpp dans instruction asm() [ par mrtoufou ] J'ai un probleme avec dev-cpp. J'ai besoin de trouver la resolution avant d'acceder a la memoire video et je comptais pour cela utiliser la fonction v switch case et gets [ par fab30 ] Bonjour, je travaille avec Dev c++ et lorsque que fait un prog contenant un gets dans un switch case ou dans une fonction appelée depuis un switch cas port série [ par cheMoor ] Salut tout le monde,Les questions:1) Comment et quand utiliser la fonction « WaitCommEvent » ?2) Est-ce que l'utilisation des threads se limite seule Besoin d'aide en C - Fonction [ par bugs2600 ] Voici mon programme quelqu'un pourrait-il m'aider je dois faire une fonction et je ne vois pas comment la faire le non de ma fonction doit etre PRODMA bitte hilfe!!!!!!!!! [ par sansan_2 ] Bonjour!!!!!!!! le programme c est un FIFO (ringpufffer) et j aimerais avoir une amelioration. Apres execution du programme, faire une tabulation, un Problème de débutant ... [ par thedivxboy ] Bonjour, je suis en train d'apprendre le C en bacalauréat mais comme les élèves et les profs ne vont pas assez vite pour moi, je m'entraîne à faire de CASE [ par CHKDSK2K ] Bonjour, j'ai une variable de type char "choix";  je voudrais utiliser cette variable dans un switch mais il ne veut passwitch(choix){    case 'maison utilisation de la souris pour un menu avec des cadres [ par MAF5582 ] /*salutj'aimerais 1-integrer une souris pour ce menu (actionner la fonction correspondante en cliqaunt sur le cadre)Est ce que quelquin peut me fourni


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales