Meric92
Messages postés27Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention 9 avril 2009
-
7 janv. 2007 à 18:25
cs_elantri
Messages postés9Date d'inscriptionvendredi 16 mai 2008StatutMembreDerniè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
/*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 !!
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201624 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
Meric92
Messages postés27Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention 9 avril 2009 7 janv. 2007 à 21:39
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 ...
<li>Dans le default, comment faire pour revenir au switch sans passer par le début de la boucle ?</li><li>Comment faire pour éffacer mon "pion" au fur et à mesure qu'il avance ?</li><li>J'aimerais que l'utilisateur appuie sur une touche pour lancer le random
</li>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*/
cs_elantri
Messages postés9Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention 1 janvier 2011 2 févr. 2009 à 17:06
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