Page 1 of 3

Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 17:52
by Andrei210
Bonjour, j'ai un problème avec la programmation d'une roulette russe.

[ Mon niveau est celui d'un débutant car cela fait 5 jours que je connait le mot algorithme et 2 jours que j'ai commencé la programmation su TI. (Il y a 5 jours c'était sr AlgoBox 0.5 qui nous a été fourni par le lycée) ]

Le principe de la roulette russe ( on sait jamais p-ê que certains ne connaissent pas) : Un pistolet 6 coups, on met une seule balle dedans et un fait tourner UNE SEULE FOIS le barillet. Ensuite chacun son tour on pointe l'arme sur sa tête et on tire une fois. Celui qui se prend la balle est mort et a, par conséquent, perdu.

Principe de mon code (mon idée de base):-calculatrice choisi un nombre entier X entre 1 et 6
-si X=1 ; montrer PAN !
-Pause / correspond au passage de la calculatrice (le revolver imaginaire) en attendant que le prochain joueur appuie sur "exe" (la détente imaginaire)
-si X=2 ; montrer PAN !
-Pause
-si X=3 ; montrer PAN !
-Pause
-si X=4 ; montrer PAN !
-Pause
-si X=5 ; montrer PAN !
-Pause
-si X=6 ; montrer PAN !

Mon Code (Avec au moins une erreur) :
Code: Select all
entAléat(1,6)-X
If X=1
Disp X
Pause
If X=2
Disp X
Pause
If X=3
Disp X
Pause
If X=4
Disp X
Pause
If X=5
Disp X
Pause
If X=6
Disp X
Pause


1°) Lorsque je le lance il m'affiche erreur : syntaxe. Quel est cette faute ?
2°) Comment utilise t-on la fonction texte( ?car après plusieurs essaies je n'ai pas trouver...

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 18:09
by kindermoumoute
Tout d'abord tu utilisa mal la syntaxe (voir wikipedia) d'une condition (If).
Toi tu fait :
If condition
code


Et la syntaxe est :
If condition
Then
Code
End

ensuite une condition peut être un peu plus développé que (si X=1 alors code fin), je te propose donc de regrouper tous dans une seule condition :
Code: Select all
entAléat(1,6)-X
If X=1 or X=2 or X=3 or X=4 or X=5
Then
Disp "Tu est sauvé"
End
If X=6
Then
Disp "PAN"
// et d'autres choses si tu veut
End

mieux encore :
Code: Select all
entAléat(1,6)→X
If X=1 or X=2 or X=3 or X=4 or X=5
Then
Disp "Tu est sauvé"
Else
Disp "PAN"
// et d'autres choses si tu veut
End


PS : If = si, then = alors, End = fin, else = sinon.

EDIT : Le problème avec la roulette russe est qu'il y a 6 coup maximum, alors qu'avec la fonction rand (Aleat en français) des calculatrice, il peut très bien se passer 7 coup dans X=6, donc ça donnera plutôt une boucle incrémenté :
Syntaxe de repeat :
Repeat condition
code
End

Code: Select all
0→I
Repeat I=6       // début de la boucle qui s’arrêtera si I est égale à 6
Pause // on attend que le joueur soit près pour le tir suivant
entAléat(1,6)→X
If X=1 or X=2 or X=3 or X=4 or X=5      // si le nombre aléatoire X n'est pas 6
Then
Disp "Tu est sauvé"
Else            // si le nombre aléatoire X est 6
5=I          // alors on met 5 sur I
End
I+1→I // ici on rajoute 1 à I à chaque boucle
End       // fin de la boucle, I est égale à 6
Disp "PAN" // soit il est mort parce que c'était le dernier coup (I=6), soit parce que X était égale à 6
// et d'autres choses si tu veut

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 18:21
by Marco
Ou plutôt, "si x différent de 6"
Code: Select all
entAléat(1,6)-X
If X≠6
Then
Disp "Tu est sauvé"
Else
Disp "PAN"
// et d'autres choses si tu veut
End

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 18:28
by kindermoumoute
exacte ^^ donc récapitulatif :
Code: Select all
0→I
Repeat I=6      // début de la boucle qui s’arrêtera si I est égale à 6
Pause // on attend que le joueur soit près pour le tir suivant
entAléat(1,6)→X
If X≠6      // si le nombre aléatoire X n'est pas 6
Then
Disp "Tu est sauvé"
Else            // si le nombre aléatoire X est 6
5=I          // alors on met 5 sur I
End
I+1→I // ici on rajoute 1 à I à chaque boucle
End      // fin de la boucle, I est égale à 6
Disp "PAN" // soit il est mort parce que c'était le dernier coup (I=6), soit parce que X était égale à 6
// et d'autres choses si tu veut


EDIT : ça doit être un peu dure à assimiler au début, donc répond nous quand tu a repris conscience et compris ce code =D

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 19:01
by Andrei210
Merci Kindermoumoute et Marco de vos réponses ! [a été édité - @ Kindermoumoute : Mais qu'est ce que tu raconte voyons ? je t'ai jamais appelé autrement que par ton pseudo xD]
je crois avoir compris mes erreurs.

Connaissez vous un site récapitulant les fonction et la manière de les utiliser (avec si possible un exemple) ? Car les seuls types de ce types que j'ai trouver n'en expliquait que quelque uns.

Edit : on en a oublié ma 2e question : comment utiliser "texte(" et j'ajoute quelle est sa différence avec disp "texte que je veux"

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 19:08
by Marco
Le manuel d'utilisation. http://education.ti.com/downloads/guide ... ok-fra.pdf
Personnellement, je préfère l'ancienne version qui était fournie en papier autrefois, mais le contenu doit être normalement le même.

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 19:27
by critor
Andrei210 wrote:Edit : on en a oublié ma 2e question : comment utiliser "texte(" et j'ajoute quelle est sa différence avec disp "texte que je veux"


"Disp" affiche en police 12 sur l'écran de calculs.
"Text(" affiche en police 8 sur l'écran graphique.

L'écran graphique permet de mélanger textes et dessins, contrairement à l'écran de calcul, et de faire rentrer plus de choses (police 8).


Pour l'utiliser:
Text(L,C,"texte que je veux")
où L est le numéro de la ligne de pixels en partant de 0 en haut
et C est le numéro de la colonne de pixels en partant de 0 à gauche

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 19:43
by kindermoumoute
Andrei210 wrote:Merci Elite et Marco de vos réponses !


Si tu lit bien mon pseudo est "kindermoumoute" ^^

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 15 Sep 2010, 19:58
by Andrei210
Kindermoumoute : quelque chose me chiffonne dans ton code.

La fonction entAléat est située A L'INTÉRIEURE de la boucle ce qui veut dire qu'un nouveau chiffre est choisi au hasard a chaque boucle non ?
Or tu rajoute 1 a I a chaque boucle donc comme lorsque I = 6 il y a donc plus de chance que le "pan" s'affiche au 6e coup que pendant un autre.

En reel sa donnerai ça :
-Si on tourne le barillet du "six coups" avant chaque tir ( comme dans ton code), le jeu devrais pouvoir durer indéfiniment alors que dans ton code il tire forcement dans son 6e coup même si la balle n'était pas au bon endroit.

J'aimerais que le barillet ne sois tourné qu'une seule fois. Ce code marcherais t il ?
Code: Select all
0-I
entAléat(1,6)-X
Repeat C=I+1
Pause
I+1=I
Disp "Tu es sauvé"
End
Pause
Disp "Pan"


En plus je me rend compte que je n'avais pas besoins de if/then/else dqui prend beaucoup de lignes et dont je ne comprenais pas tout a fait le fonctionnement.

Re: Programmation du "jeu" de la roulette russe

Unread postPosted: 16 Sep 2010, 07:30
by kindermoumoute
Je me base sur le fait qu'un pistolet a 6 coup, et que si il y a une balle dans les 6, et que 5 coup ont été tirés sans effet, le 6 ème est le bon. Et il faut à chaques tour ce boucle recréer un nombre entier aléatoire entre 1-6.

Ps : je ne comprend pas ton code.