Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 1631
Réponses : 28
Type : discussion
Etat : réponses autorisées

Pile ou face

ToTo le 07/11/2008 à 16:53
Salut,

J'ai un p'tit problème avec un programme que je n'arrive pas à faire fonctionné.
J'ai déjà regarder les autres sujets sur le jeu "pile ou face" mais je n'y est pas trouvé mon bonheur.
Je vous copie le mien:

Code
ClrDraw
Circle(0,0,6
For(A,1,27
Text(26,A," PILE"
End
For(B,80,54,(-)1         
Text(26,B,"FACE "
End
For(C,1,35
Text(C,44,"OU"
End
Text(25,46,"?"
Pause
Lbl C
Menu("  PILE OU FACE","LA CHANCE ?!",A,"PEURREUX!",B
Lbl B:Stop
Lbl A
ClrHome
Input "PILE:1 OU FACE:2",A
int(rand2+1->B
If A=1 and B=1:Output(4,1,"GAGNE'!":
If A=2 and B=2:Output(4,1,"GAGNE'!":
If A=1 and B=2:Output(4,1,"PERDU!":
If A=2 and B=1:Output(4,1,"PERDU!":Pause
Goto C


Je ne comprends pas ce qui ne va pas. C'est un erreur bizarre. Ce n'est pas de mon niveau. xD
Alors dites moi si c'est tout faux, si c'est tout a refaire ou juste si il y a un petit problème. ahh.gif
coc5 le 08/11/2008 à 00:38
A première vue il n'y aurait pas d'erreur... Mais si tu nous disais où t'envoie le programme à l'erreur, et quel type d'erreur est signalée...

En revanche, ton code peut être amélioré !

Ici surtout :
Code

If A=1 and B=1:Output(4,1,"GAGNE'!":
If A=2 and B=2:Output(4,1,"GAGNE'!":
If A=1 and B=2:Output(4,1,"PERDU!":
If A=2 and B=1:Output(4,1,"PERDU!":Pause


Remplace-le par ça :
Code
ClrHome
If A=B:Output(4,1,"GAGNE !
If A-B:Output(4,1,"PERDU !
Pause
ToTo le 08/11/2008 à 13:50
Citation
A première vue il n'y aurait pas d'erreur... Mais si tu nous disais où t'envoie le programme à l'erreur, et quel type d'erreur est signalée...


Il m'envoie à:


Code
:For(A,1,27
:Texte(26,A,"PILE"   (il me place le curseur à la fin de cette ligne)


Et pour ce que tu me propose, c'est pas mal ( lol respect extraterre.gif ), ça fais gagné pas mal de place.

Mais je ne comprends pas le signe - entre A et B dans cette ligne:
Code
If A-B:Output(4,1,"PERDU !
webmaster le 08/11/2008 à 14:32
Salut,

Remplace ce "-" par le symbole "Différent de".

@+ Le Webmaster beer.gif
ToTo le 08/11/2008 à 18:33
Ok, j'ai compris. Merci bigmouth.gif
ToTo le 08/11/2008 à 19:01
Ça marche enfin !

Cependant, j'aimerai y ajouté une modification, si cela est possible.

Je m'explique: quand on lance le programme on a "PILE", "OU", "FACE" et "?" qui s'affiche en ce déplacent, mais en ce déplacent le "PILE" laisse les pixels noirs derrière lui.
Peut-on y faire quelque chose ? crazy.gif
Sangohan38 le 08/11/2008 à 19:49
Met un espace apès le "pile" comme ça, tu dessinera un esace donc effacera les pixels.

Sangohan38
ToTo le 08/11/2008 à 19:54
Je ne sais pas si il faut mettre :
Code
Texte(26,A,"PILE"

ou
Code
Texte(26,A,"PILE "
Mais ça ne change rien.
coc5 le 08/11/2008 à 19:59
L'espace est à mettre avant.
ToTo le 08/11/2008 à 20:57
J'y étais presque. xD Merci.
Ça marche normalement !

Je remet le programme ( modifié ) pour ceux que ça intéresse. (233 bits)

Code
EffEcr
Cercle(0,0,6
For(A,1,25
Text(26,A," PILE"
End
For(B,80,54,(-)1
Text(26,B,"FACE "
End
For(C,1,35
Text(C,44,"?"
End
Text(25,44,"OU"
Pause
Lbl C
Menu("  PILE OU FACE","LA CHANCE ?!",A,"CIAO",B
Lbl B
Stop
Lbl A
EffEcr
Input "PILE:1 OU FACE:2",A
partent(NbrAléat+1->B
EffEcr
If A=B
Output(4,1,"GAGNER !
If A-B
Output(4,1,"PERDU..
Le signe - est le signe "différent de" !

Merci de m'avoir aidé.
ToTo le 11/11/2008 à 10:40
En fait, je me suis aperçu qu'il ne fonctionne pas normalement.
Je vous le renvoie quand j'aurai fini de refaire la fin.
coc5 le 11/11/2008 à 10:59
La génération du nombre aléatoire est mauvaise. En effet NbrAlea est compris entre 0 et 0.99999999[...]
Donc 1 + NbrAlea sera compris entre 1 et 1.999999999[...]
Et la partie entière sera donc toujours de 1 !

Fait 2NbrAlea+1, là ça va marcher winkle.gif
ToTo le 11/11/2008 à 11:00
Ralala...

Maintenant j'ai une "ERR:ETIQUETTE", je ne sais pas ce que c'est, on peu me dire quel est le problème ? crazy.gif
coc5 le 11/11/2008 à 11:04
N'ayant pas de Ti "française" je ne suis pas sur de l'erreur... Peux-tu me dire où elle se trouve ?
ToTo le 11/11/2008 à 11:09
Ah je n'avais pas vu ce post :

Citation

La génération du nombre aléatoire est mauvaise. En effet NbrAlea est compris entre 0 et 0.99999999[...]
Donc 1 + NbrAlea sera compris entre 1 et 1.999999999[...]
Et la partie entière sera donc toujours de 1 !

Fait 2NbrAlea+1, là ça va marcher

Bon bah j'essaie.
coc5 le 11/11/2008 à 11:12
En refléchissant un peu j'ai déduit que ERR:ETTIQUETTE était du à un problème... d'étiquettes minied.gif
Non mais en fait, le problème vient de tes Lbl. Regarde si tu n'as pas supprimé Lbl A ou Lbl B en modifiant ton programme.
ToTo le 11/11/2008 à 11:26
C'est bon j'ai remis comme c'était donc pour le porblème d'étiquette on oublie pour le moment. Parce ce que tu m'as dis de faire ne fonctionne pas. crazy.gif Je perdu tous le temps.

Code
2NbrAlea+1
Es-ce que cette ligne veux dire que tu choisie 2 nombres aléatoires et que tu y rajoute 1 ? J'ai pas compris, j'ai besoin d'explication.

Cependant j'ai pensé à mettre ce code:
Code
:randInt(0,1)


Ça peut fonctionner avec ça ?
coc5 le 11/11/2008 à 12:23
En fait je voulais dire partEnt(2NbrAlea + 1) ! Sinon tu as une chance sur 2x10^14 d'avoir le bon résultat minied.gif

Et c'est randInt(1,2) sinon tu n'auras jamais face x_X (soit pile (1) soit rien (0) )

Préfère la première solution comme ça ton code est comptable avec les Ti82.
ToTo le 11/11/2008 à 20:34
Bon voilà nikel, ça marche !

Voilà le résultat final: Pile ou face (225 bits)

Code
EffEcr
Cercle(0,0,6
For(A,1,25
Text(26,A," PILE
End
For(B,80,54,(-)1
Text(26,B,"FACE
End
For(C,1,35
Text(C,44,"?
End
Text(25,44,"OU
Pause
Lbl C
Menu("  PILE OU FACE","LUCK",A,"BYE",B
Lbl B
Stop
Lbl A
EffEcr
Input "PILE:1 OU FACE:2",A
partEnt(2NbrAléat+1)->B
EffEcr
If A=B
Output(4,1,"WIN !
If A-B
Output(4,1,"LOSE..
mael-ti le 10/03/2009 à 11:53
Merci mais je conseil de mettre
Code
EffDessin
avant tout le programme sinon tout vos dessin ou graphique s'aficheront en même temps. crazy.gif
Il y a aussi quelque bug que je ne comprend pas cry.gif mais bon c'est déjà sa (tkt je critique mais je ne fait pas le 100eme de toi en programmation c'est juste des conseils!)

mael-ti

PS: tu as mis LOSE pour si on pert... mais on dit LOOSE en anglais! ^^
oranjules le 10/03/2009 à 16:43
non c'est bien lose :p
moi j'ai pas essayé ce programme perso... j'ai ma machine a sous minied.gif
le conseil de mael ti est effectivement très utile, par contre, si tu veux de l'aide, dis nous ou ca bug, et quel type d'erreur ca affiche !
Sangohan38 le 10/03/2009 à 19:54
Dans le même genre, mieux vaut mettre GraphOff dans ce cas sinon on affiche aussi les graphiques des fonctions.

Sangohan38
mael-ti le 12/03/2009 à 09:18
C'est ou GraffOff ? eyeonly.gif
Sangohan38 le 14/03/2009 à 15:01
Je me suis tromper, c'est FnOff.
Tu le trouvera dans le catalogue.

Sangohan38
mael-ti le 17/03/2009 à 11:23
ok merci mais c'est bien LOOOSE ! c'est ma prof d'anglais qui me l'a dit!
oranjules le 22/03/2009 à 15:30
ah bah oui au participe passé ca doit etre loose...
PS : tu demandes a ta prof d'anglais des traductions pour des programmes de calculette ? :p
NB : a la base le sujet était quand meme un programme donc oui je me suis planté et on ferme la conversation ^^
amine le 16/09/2009 à 00:27
C'est où la touche cupsmiley.gif de la calculette ?
amine le 16/09/2009 à 00:27
C'est où la touche ( - ) de la calculette ? Désolé
Sangohan38 le 19/09/2009 à 15:02
J'ai envie de te dire qu'il faut apprendre à lire un en-tête avant de poster: c'est marquer dans la FAQ et dans le sujet "fonctions TI-83".

Sangohan38