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 !!
