Accueil > Forum > > > > pierre feuille ciseaux
pierre feuille ciseaux
vendredi 18 août 2006 à 18:47:06 |
pierre feuille ciseaux

wilvart
|
Bonjour; je programme en C++ depuis peu de temps et j'ai voulu créer un mini-jeu, à savoir le jeu du pierre-feuille-ciseaux. J'ai une version qui marche correctement mais qui n'est pas très "belle". J'ai essayer une autre façon de faire mais j'ai des problèmes. Merci de m'aider. VERSION OPERATIONNELLE :
#include <cstdio> #include <cstdlib> #include <iostream> using namespace std;
int main(int nNumberofArgs, char* pszArgs[]) { cout << "Voici le jeux du pierre-feuille-ciseaux.\n 1 = pierre\n 2=feuille\n 3=ciseaux\n 4 pour quitter" << endl;
int TUt = 0, TComp = 0;
re:
int randComp = 0, chxUt = 0;
randComp = rand() % 4;
cin >> chxUt;
if (chxUt > 4) { cout << "Entrez un nombre compris entre 0 et 3" << endl; goto re; }
if (chxUt <= 0) { cout << "Entrez un nombre compris entre 0 et 3" << endl; goto re; }
if (chxUt == 1) { if (randComp == 1) { cout << "pierre - pierre" << endl; cout << " EGALITE" << endl; goto re; }
if (randComp == 2) { cout << "pierre - feuille" << endl; cout << " PERDU" << endl; TComp++; goto re; }
if (randComp == 3) { cout << "pierre - ciseaux" << endl; cout << " GAGNE" << endl; TUt++; goto re; }
goto re;
}
if (chxUt == 2) { if (randComp == 1) { cout << "feuille - pierre" << endl; cout << " GAGNE" << endl; TUt++; goto re; }
if (randComp == 2) { cout << "feuille - feuille" << endl; cout << " EGALITE" << endl; goto re; }
if (randComp == 3) { cout << "feuille - ciseaux" << endl; cout << " PERDU" << endl; TComp++; goto re; }
goto re;
}
if (chxUt == 3) { if (randComp == 1) { cout << "ciseaux - pierre" << endl; cout << " PERDU" << endl; TComp++; goto re; }
if (randComp == 2) { cout << "ciseaux - feuille" << endl; cout << " GAGNE" << endl; TUt++; goto re; }
if (randComp == 3) { cout << "ciseaux - ciseaux" << endl; cout << " EGALITE" << endl; goto re; }
goto re;
}
if (chxUt == 4) { cout << "Fin de la partie.\n Score Utilisateur : " << TUt << "\n Score Ordinateur : " << TComp << endl; goto fin; }
fin:
system("PAUSE"); return 0; } VERSION A PROBLEMES :
#include <cstdio> #include <cstdlib> #include <iostream> using namespace std;
// Où je dois mettre ça " srand(time(NULL)) " pour avoir un vrai nombre aléatoire ?
int TUt = 0, TComp = 0, randComp = rand() % 4; // C'est variables sont elles globales ?
int main(int nNumberofArgs) // Je ne retourne rien avec main(), écrire " void main(int nNumberofArgs) " ne serait pas plus correct? { cout << "Voici le jeux du pierre-feuille-ciseaux.\n 1 = pierre\n 2=feuille\n 3=ciseaux\n 4 pour quitter" << endl;
int chxUt = 0;
cin >> chxUt;
if (chxUt == 1) { pierre(); }
if (chxUt == 2) { feuille(); }
if (chxUt == 3) { ciseaux(); } return 0; }
int pierre (int randComp) // Je ne retourne rien avec pierre(), écrire " void pierre(int randComp) " ne serait pas plus correct? { switch(randComp) { case 1 : cout << "pierre - pierre" << endl; cout << " EGALITE" << endl; break; case 2 : cout << "pierre - feuille" << endl; cout << " PERDU" << endl; TComp++; break; case 3 : cout << "pierre - ciseaux" << endl; cout << " GAGNE" << endl; TUt++; break; case 4 : end(); break; default : error(); } return 0; }
int feuille (int randComp) // Je ne retourne rien avec feuille(), écrire " void feuille(int randComp) " ne serait pas plus correct? { switch(randComp) { case 1 : cout << "feuille - pierre" << endl; cout << " GAGNE" << endl; TUt++; break; case 2 : cout << "feuille - feuille" << endl; cout << " EGALITE" << endl; break; case 3 : cout << "feuille - ciseaux" << endl; cout << " PERDU" << endl; TComp++; break; case 4 : end(); break; default : error(); } return 0; }
int ciseaux (int randComp) // Je ne retourne rien avec ciseaux(), écrire " void ciseaux(int randComp) " ne serait pas plus correct? { switch(randComp) { case 1 : cout << "ciseaux - pierre" << endl; cout << " PERDU" << endl; TComp++; break; case 2 : cout << "ciseaux - feuille" << endl; cout << " GAGNE" << endl; TUt++; break; case 3 : cout << "ciseaux - ciseaux" << endl; cout << " EGALITE" << endl; break; case 4 : end(); break; default : error(); } return 0; }
void error (int chxUt) { cout << "Entrez un nombre compris entre 1 et 4" << endl;
main();
return 0; }
void end (int TUt, TComp) { cout << "Fin de la partie.\n Score Utilisateur : " << TUt << "\n Score Ordinateur : " << TComp << endl;
system("PAUSE"); return 0; }
|
|
vendredi 18 août 2006 à 19:00:37 |
Re : pierre feuille ciseaux

luhtor
|
"Où je dois mettre ça " srand(time(NULL)) " pour avoir un vrai nombre aléatoire ?" => Au début de main()
"C'est variables sont elles globales ?" => Oui, mais tu fais appel au générateur aléatoire alors qu'il est pas initialisé par srand()
"Je ne retourne rien avec main(), écrire " void main(int nNumberofArgs) " ne serait pas plus correct?" => Si tu retournes 0. C'est l'os qui veut ca. Pour toutes les autres fonctions, tu peux mettre void.
Mais je me permets de dire, que ca reste le boxon ton programme :)
|
|
vendredi 18 août 2006 à 19:06:06 |
Re : pierre feuille ciseaux

wilvart
|
Merci pour ton aide, je sais que c'est pas encore très bon comme programme, et justement je me suis inscrit sur ce forum pour apprendre, si tu as des conseils à me donner, des fautes à corriger, ou carrement une version de ce programme qui marche et qui est compréhensible je veux bien de ton aide.
|
|
vendredi 18 août 2006 à 19:29:10 |
Re : pierre feuille ciseaux

luhtor
|
Celle la me parait mieux, pas on pourrait bcp en dire encore.
#include <iostream>
using namespace std;
enum Choix { PIERRE = 0, FEUILLE, CISEAU };
char *conversion[] = {"Pierre", "Feuille", "Ciseau"};
// Creation de l'opéateur d'infériorité
bool operator < (const Choix c1, const Choix c2)
{
if ((c1 == PIERRE) && (c2 == FEUILLE))
return true;
if ((c1 == FEUILLE) && (c2 == CISEAU))
return true;
if ((c1 == CISEAU) && (c2 == PIERRE))
return true;
// Dans tous les autres cas
return false;
}
/* Fonction MAIN */
int main()
{
srand(time(NULL));
int utilisateur = 0, aleatoire = 0;
cout << "Entrez votre choix : " << flush;
cin >> utilisateur;
if ((utilisateur > 2) && (utilisateur < 0))
{
cout << "Valeur incorrecte" << endl;
return 1;
}
aleatoire = rand() % 4;
Choix choix_utilisateur = (Choix)utilisateur;
Choix choix_aleatoire = (Choix)aleatoire;
cout << endl;
cout << conversion[choix_utilisateur] <<
" - " << conversion[choix_aleatoire] << endl;
// On cherche le vainqueur
if (choix_utilisateur < choix_aleatoire)
cout << "VOUS AVEZ PERDU !" << endl;
else if (choix_utilisateur == choix_aleatoire)
cout << "EGALITE ! " << endl;
else cout << "VOUS AVEZ GAGNE ! " << endl;
system("PAUSE");
return 0;
}
|
|
vendredi 18 août 2006 à 19:32:29 |
Re : pierre feuille ciseaux

luhtor
|
Oula j'avais pas vu. Tu inclues tes fonctions dans main(). Ca n'a pas de sens (enfin si un peu), mais ca sert a rien ca.
Faut créer les fonctions au dessus du main() sinon elles ne sont pas visible:
void ta_fonction()
{
...
}
int main()
{
...
}
OU ALORS
void ta_fonction(); // <= POINT VIRGULE
int main()
{
...}
void ta_fonction()
{
...
}
|
|
vendredi 18 août 2006 à 19:33:26 |
Re : pierre feuille ciseaux

luhtor
|
Bon tu corrigeras: if ((utilisateur > 2) || (utilisateur < 0)) à
la place de ca: if ((utilisateur > 2) && (utilisateur <
0))
|
|
vendredi 18 août 2006 à 19:54:04 |
Re : pierre feuille ciseaux

wilvart
|
Merci pour printf ;)
Je ne comprend pas tout ton code pourrait tu m'expliquer certaine partie?
(désolé si j'ai mit plus de la moitié du code :D)
enum Choix { PIERRE = 0, FEUILLE, CISEAU };
char *conversion[] = {"Pierre", "Feuille", "Ciseau"};
// Creation de l'opéateur d'infériorité
bool operator < (const Choix c1, const Choix c2)
{
if ((c1 == PIERRE) && (c2 == FEUILLE))
return true;
if ((c1 == FEUILLE) && (c2 == CISEAU))
return true;
if ((c1 == CISEAU) && (c2 == PIERRE))
return true;
// Dans tous les autres cas
return false;
}
cout << "Entrez votre choix : " << flush; ici "flush"????
cin >> utilisateur;
if ((utilisateur > 2) || (utilisateur < 0))
{
cout << "Valeur incorrecte" << endl;
return 1; pourquoi retourné 1 et pourquoi au milieu du programme?
Choix choix_utilisateur = (Choix)utilisateur;
Choix choix_aleatoire = (Choix)aleatoire;
cout << endl;
cout << conversion[choix_utilisateur] << " - " << conversion[choix_aleatoire] << endl;
|
|
vendredi 18 août 2006 à 21:44:05 |
Re : pierre feuille ciseaux

luhtor
|
Réponse acceptée !
"flush" pour pas passer a la ligne et pour une histoire de buffer (faut pas m'en demandé plus sur flush et endl).
Je retourne 1 car le programme s'arrete sur une erreur. Dans le cas de
succès, on retourne 0. Mais ici c'est juste par logique, ca ne sert pas
a grand chose pour XP.
Si tu connais pas les enums => Google : C++ enum
"char *conversion[] = {"Pierre", "Feuille", "Ciseau"};" <= ca n'est
valide que parce que je donne une valeur par défaut. Sinon il faut
d'abord allouer de la mémoire.
"bool operator < (const Choix c1, const Choix c2)" <= et ca c'est
juste pour définir l'opérateur d'infériorité entre deux élements de
l'enumération (Choix).
ca reviendrait au meme de faire une fonction : bool PlusPetitQue(c1, c2);
|
|
vendredi 18 août 2006 à 22:11:40 |
Re : pierre feuille ciseaux

wilvart
|
Ok merci de ton aide et bon developpement à toi!!
|
|
samedi 19 août 2006 à 16:55:52 |
Re : pierre feuille ciseaux
|
Cette discussion est classée dans : int, goto, cout, re, randcomp
Répondre à ce message
Sujets en rapport avec ce message
Pas compris les arguments [ par Bog ]
Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c
Pas compris les arguments [ par Bog ]
Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c
Dans le genre prenant........ [ par Xs ]
oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l
implicit declaration of function `int getchar(...)' [ par cognac ]
À chaque fois que j'utilise getch(); j'obtien le message suivant:getch();Voici mon programme (en fait mon exercice):#include //bibliotheque d'entree
Reference pour arguments de fonction! [ par CoxJoe ]
Hello,Voila mon code qui est tres simple :# include # include using namespace std;// fonction pour entrer des lettresvoid getchar(char& name[]){ cout
une fiche de renseignement [ par cabarrus ]
je cherche à faire un programme qui demande des renseignements pour pouvoir ensuite les affiché comme une fiche d'identité!!!voici monprogramme mais m
Pobleme de debutant bas niveau [ par zzzzzz ]
#include ?iostream.h? /* pour cout cin */int a;int factorielle(int n) { if(n==0) { return 1; } else { return n*factorielle(n-1); }}void main()
tableau de structures type pointeur [ par chocho ]
Merci d'avoir répondu à ma demande d'aide.Voici la source sur laquelle je coince:#include#include#define maxlist 10int indicecourant;struct abonne
simplifier une fraction ( débutant ) !!! [ par myogtha ]
#include int main (){int denominateur,mulfac1,mulfac2,facmul1,facmul2,facmulfinal;int a,b,c,d;coutcin>>a;coutcin>>
Les nombres aléatoires en C++ (Visual C++ 6.0) [ par Yabo ]
Tout d'abord voilà le code :CODE #include #include #include #include using namespace std;void animstartscreen() { int n
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|