Problème de boucle While [C] - C - Programmation
Marsh Posté le 08-01-2008 à 20:00:28
unidentified a écrit : utilise un if ... |
Bah, ouais, c'est clair que sa boucle va boucler après ça ....
Perso, j'aurais plutôt utilisé un && au lieu de || dans le while. Le && voulant dire dans ce contexte : si un des joueurs à 10 pts, alors on dégage.
Marsh Posté le 08-01-2008 à 20:22:48
tpierron a écrit : Perso, j'aurais plutôt utilisé un && au lieu de || dans le while. Le && voulant dire dans ce contexte : si un des joueurs à 10 pts, alors on dégage. |
+1
Je voudrais juste expliquer la condition telle qu'elle est écrite dans le code pour une meilleure compréhension :
while (eurosHumain <= 10 || eurosOrdi <= 10) |
signifie : "tant que eurosHumain <= 10 ou eurosOrdi <= 10, alors boucler"
Donc ton while bouclera tant qu'au moins l'un des joueurs aura moins de 10€. Ce qui n'est pas ce que tu veux. Pour la suite de l'explication, lire le post de tpierron.
Marsh Posté le 08-01-2008 à 21:49:13
Merci à vous!
J'ai compris pourquoi il fallait mettre && plutôt que ||
Ça marche niquel... A un détail près, ça allait jusqu'à 11 effectivement. J'ai donc mis:
Code :
|
plutôt que:
Code :
|
Marsh Posté le 08-01-2008 à 23:28:21
Une heuristique utile pour ce jeu contre un joueur humain:
- Jouer le coup qui aurait été le coup perdant lors de la partie précédente
En effet, des etudes statistiques montrent qu'un joueur humain a tendance a jouer le coup qui l'aurait battu au tour précédent.
A+,
Marsh Posté le 09-01-2008 à 09:24:55
Comme ça y'a qu'a jouer le coup qui aurait été le coup gagnant lors de la partie précédente, et on est sûr de gagner
Marsh Posté le 09-01-2008 à 09:51:21
Non, c'est le coup perdant de la partie precedente qui devient le coup gagnant de la partie suivante (ou plus justement, qui statistiquement, a de plus grandes chances d'être le coup gagnant). Le coup qui aurait été le coup gagnant lors de la partie précédente, c'est ce que va avoir tendance a jouer le joueur humain.
Apres, quand on veut aller plus loin dans l'heuristique, il faut aussi tenir compte d'une tendance a jouer un peu plus caillou que les deux autres chez les joueurs humains.
L'article d'ou je tire ces infos: http://media.newscientist.com/data [...] 263566.pdf
Quelques liens sur une compet entre programmes jouants l'un contre l'autre décrite dans l'article:
http://cplus.about.com/od/programm [...] lenge1.htm
(le code du vainqueur actuel) http://cplus.about.com/library/dow [...] eleton.cpp
A+,
Marsh Posté le 09-01-2008 à 11:37:46
ReplyMarsh Posté le 10-01-2008 à 00:02:48
ReplyMarsh Posté le 10-01-2008 à 11:20:32
Tu initialises la seed de ta fonction aléatoire dans une boucle. Pour peu que tu joues deux fois avant que l'heure ne change (à la seconde près), ton nombre aléatoire sera le même ces deux fois.
Tu pourrais donc par exemple sortir ton srand(time(NULL)); de ta boucle while pour éviter ce comportement.
Marsh Posté le 10-01-2008 à 12:50:47
ReplyMarsh Posté le 11-01-2008 à 17:56:59
ccp6128 a écrit : Tu initialises la seed de ta fonction aléatoire dans une boucle. Pour peu que tu joues deux fois avant que l'heure ne change (à la seconde près), ton nombre aléatoire sera le même ces deux fois. |
+1
Détails : http://mapage.noos.fr/emdel/notes.htm#rand
Marsh Posté le 11-01-2008 à 17:58:27
janothays a écrit : |
C'est plutôt joliment codé pour un débutant...
(enfin, à première vue...)
Marsh Posté le 12-01-2008 à 00:59:50
unidentified a écrit : Ouais ... Je dirais même qu'il y a la patte du site du zero là-dedans |
A cause des 'long' ? Oui, on a ralé, ça devrait changer...
Marsh Posté le 08-01-2008 à 18:32:29
Salut à tous! Et merci de me filer un coup de main!
Avant de commencer, je précise que je débute en C.
Alors voilà j'ai un soucis avec une boucle while. Le but du programme et de réaliser un petit jeu Pierre, Feuille, Ciseaux. L'ordi tire au hasard un nombre correspondant à un des 3 choix. Jusque là pas de soucis.
Le joueur qui gagne remporte 1 euros et dès qu'un joueur atteint 10 euros, le programme est censé s'arrêter.
Et c'est là que se trouve le soucis... Le programme continue, même si l'un des joueurs dépasse 10 euros...
Je comprends pas pourquoi, pourriez-vous me l'expliquer s'il vous plaît??
Précision: Le code source se compile bien sans soucis...
Voici le code:
Message édité par janothays le 08-01-2008 à 18:33:52
---------------
http://www.mandrivalinux-online.eu