Hasard |
Auteur |
Message |
Wolfed
Invité
|
Posté le : Sam 24 Oct 2009, 23:20
|
|
|
Bonjour à tous !
Je viens de découvrir ce super site très complet sur la TI82 (même si je possède une 83, ça m'aide beaucoup...)
J'ai décidé l'autre jour de créer un petit programme simple, sachant que je n'ai jamais appris la programmation sur calculatrice (je me suis simplement aidé de programmes déjà faits et j'ai regardé quelles commandes faisaient quoi).
Et finalement je trouve ça plus facile que ça n'en a l'air !
je vous expose donc mon 1er programme et j'espère que vous pourrez m'aider.
Il s'agit tout simplement du célèbre jeu du juste prix (eh oui, encore un !), un chiffre au hasard et il s'agit de le retrouver grâce aux plus ou aux moins. J'ai trouvé ça sympa pour commencer.
Voici le programme :
Code |
:Lbl AA
:randInt(1,10000)->N
:Lbl BB
:ClrHome
:Input "TROUVE LE NOMBRE",X
:If X<N
:Then
:Disp " " (pour sauter un ligne)
:Disp "TROP PETIT"
:Disp " "
:Disp "°*PRESS ENTER*°"
:Pause
:ClrHome
:GotoBB
:End
:If X>N
::Then
:Disp " "
:Disp "TROP GRAND"
:Disp " "
:Disp "°*PRESS ENTER*°"
:Pause
:ClrHome
:GotoBB
:End
:If X=N
:Then
:Disp " "
:Disp "°*YOU WIN*°"
:Disp " "
:Disp "°*APPROVED*°"
:Disp " "°*BY (votre nom)*°" (juste pour le fun :D)
:Pause
:ClrHome
:Goto X
:End
:Lbl X
:Menu("RECOMMENCE ?","OUI",AA,"NON",CC)
:Lbl CC
:Stop
:Output(1,1"
:End
|
Bon voilà, j'ai aussi pensé à rajouter dans le menu "Niveau suivant" avec un programme similaire qui dit "Plus grand" et "Plus petit" uniquement dans un encadrement de la solution, pour des valeurs trop éloignées, le programme indiquerait "Trop loin" sans que le joueur sache si il est trop haut ou trop bas.
Enfin bref, tout ça pour demander si il y a du superflu dans mon programme (pour l'alléger) et si il est possible d'ajouter facilement (sans trop changer quoi que ce soit) un compteur pour savoir en combien de coups on a trouvé le bon numéro.
--------------
Ah, et une autre question qui n'a rien a voir, j'ai commencé un autre programme qui traduit l'alphabet en morse. Il est sous la forme :
Code |
:ClrHome
:Menu("-ALPHABET-","MORSE",MO)
:Lbl MO
:Input "LETTRE : ",X
:If X=A
:Then
:Disp " " (toujours la ligne sautée :D)
:Disp " .-"
:Pause
:ClrHome
:Goto MO
:End
:If X=B
:Then
:Disp " "
:Disp " -..."
:[...]
|
Bon, je sais qu'il existe probablement un moyen plus rapide de faire ça, mais là n'est pas la question : en continuant ainsi jusqu'à Z, le programme marche parfaitement SAUF pour la lettre C et la lettre E. J'ai bien regardé, il n'y a aucune faute, mais le programme s'obstine à me répondre " .-" (le morse de la lettre A) pour les lettres C et E, et aucune autre. J'ai essayé de changer le " .-" en "*(" par exemple, le problème persiste.
D'ou vient-t-il ?
De plus, il y aurait-il un moyen efficace de faire la conversion inverse (de morse en lettres) et l'ajouter au menu sans refaire tout un programme ?
Merci d'avance pour toutes vos réponses (si vous avez le courage de m'aider et de me lire )
|
|
|
|
Sangohan38
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Sam 24 Oct 2009, 23:28
|
|
|
Ton problème est simple: en testant si X=A où B ... il regarde la valeur affecter aux variables A,B ... .
Il te suffit donc de donner une valeur à tes variables pour résoudre ton problème.
Et le X n'existe pas dans l'alphabet morse car tu fait varier la variable X.
Dans ce cas, utilise Theta dans ton input plutôt que X.
Enfin pour ton problème du morse à la lettre ça peut être faisable en utilisant soit le graphe soit des menus et cela risque d'être long et compliqué mais je vais essayer de m'atteler à la tache.
Sangohan38
PS: On peut raccourcir ton programme du juste prix: fait une recherche sur le forum avec plus où moins, trouver un nombre ...
|
|
|
|
Wolfed
Invité
|
Posté le : Sam 24 Oct 2009, 23:39
|
|
|
Erf, effectivement je n'avais pas prévu ça...
Je viens de le corriger, ça marche impeccable, merci
Faut être vachement attentif pour écrire un programme qui fonctionne quand même
|
|
|
|
S.k-bo
Invité
|
Posté le : Dim 25 Oct 2009, 1:53
|
|
|
Pour ton jeu du juste prix qui marche super bien pouvons nous metre une palette de nombre plus grande car là c'est compris entre 0 et 1 et même je crois que ca n bouge pas de 6 exemple un X = de 0 à 100 non ??
|
|
|
|
S.k-bo
Invité
|
Posté le : Dim 25 Oct 2009, 1:55
|
|
|
Je reconfirme il s'agit seulement du nombre 6 à trouver donc ne m'y connaissant pas en programtion, je ne peut pas élargir le nombre à trouver
|
|
|
|
sypotu
Autorisation : Membre
Nb de messages : 655
Inscrit le : Dim 13 Sep 2009, 8:27
|
Posté le : Dim 25 Oct 2009, 6:11
|
|
|
non il est compris entre 1 et 10 000
tu as du faire une erreur
---------------------- Ti-83+.fr
Passe en 1ère S
Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Hebergeur pour vos .83p |
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
Wolfed
Invité
|
Posté le : Dim 25 Oct 2009, 9:51
|
|
|
En effet, mais l'erreur provient peut-être du 'randInt' qui peut être facilement confondu avec le 'rand' pour les possesseurs de calculatrices françaises qui ont 'entAléat' ou 'NbrAléat'
|
|
|
|
S.k-bo
Invité
|
Posté le : Dim 25 Oct 2009, 11:20
|
|
|
Le problème c'est qu'en mettant entaléat, il y a une parenthèse à la fin et que quand je lance le jeu ca me met erreur syntaxe sur cette ligne
Donc que faut-il ajouter après entaléat( ???
Merci de vos réponses
|
|
|
|
Rézus
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
|
Posté le : Dim 25 Oct 2009, 11:33
|
|
|
tu dois rajouter 1,10000->N après la parenthèse.
|
|
|
|
S.k-bo
Invité
|
Posté le : Dim 25 Oct 2009, 11:57
|
|
|
Merci merci beaucoup ca marche niquel =')
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
Wolfed
Invité
|
Posté le : Dim 25 Oct 2009, 12:13
|
|
|
Bon, je me suis risqué à ajouté un compteur de coups, et évidemment, il me fait n'importe quoi XD
Code | Lbl AA
:randInt(1,10000)->N
:S=0 <--- (pour faire commencer le score à 0)
:Lbl BB
:ClrHome
:Input "TROUVE LE NOMBRE",X
:If X<N
:Then
:Disp " "
:Disp "TROP PETIT"
:Disp " "
:Disp "°*PRESS ENTER*°"
:S+1=S <--------
:Pause
:ClrHome
:GotoBB
:End
:If X>N
::Then
:Disp " "
:Disp "TROP GRAND"
:Disp " "
:Disp "°*PRESS ENTER*°"
:S+1=S <--------
:ClrHome
:GotoBB
:End
:If X=N
:Then
:Disp " "
:Disp "°*YOU WIN*°"
:Disp " "
:Disp "°*APPROVED*°"
:Disp " "°*BY (votre nom)*°"
:Pause
:ClrHome
:Output(3,7,S <---------
:Output(4,6,"COUPS") <----
:Pause
:Goto X
:End
:Lbl X
:Menu("RECOMMENCE ?","OUI",AA,"NON",CC)
:Lbl CC
:Stop
:Output(1,1"
:End |
Et si je le fais en 20 coups, il me dit 132
Qu'est ce qui ne va plus ?
PS : J'ai changé la valeur X du chiffre choisi en valeur thêta au cas où
|
|
|
|
Rézus
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
|
Posté le : Dim 25 Oct 2009, 12:39
|
|
|
Il faut marquer S+1->S et non S+1=S.
|
|
|
|
Wirekey
Autorisation : Membre
Nb de messages : 240
Inscrit le : Mer 17 Jui 2009, 0:54
|
Posté le : Dim 25 Oct 2009, 12:56
|
|
|
Citer : Wolfed | Bon, je me suis risqué à ajouté un compteur de coups, et évidemment, il me fait n'importe quoi XD
Et si je le fais en 20 coups, il me dit 132
Qu'est ce qui ne va plus ?
PS : J'ai changé la valeur X du chiffre choisi en valeur thêta au cas où |
Code | Lbl AA
0üS
randInt(1,10)üN
Lbl BB
ClrHome
Repeat X=N
Input "TROUVE LE NOMBRE",X
S+1üS
If X<N
Then
Disp " ","TROP PETIT"," ","?*PRESS ENTER*?"
Pause
ClrHome
End
If X>N
Then
Disp " ","TROP GRAND"," ","?*PRESS ENTER*?"
Pause
ClrHome
End
End
Disp "GAGNER EN :
Output(3,7,S
Output(4,6,"COUPS"
Pause
ClrHome
Menu("RECOMMENCE ?","OUI",AA,"NON",CC)
Lbl CC
Output(1,1,"
|
Voila j'lai modifié rapidement
Il marche Mais tu peux grandement l'améliorer
|
|
|
|
pitilolo
Autorisation : Membre
Nb de messages : 23
Inscrit le : Dim 25 Oct 2009, 10:31
|
Posté le : Dim 25 Oct 2009, 12:59
|
|
|
bah oui S+1=S c'est pour tester dans un if si S+1 et S ont la meme valeur.
|
|
|
|
Rézus
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
|
Posté le : Dim 25 Oct 2009, 13:10
|
|
|
Ce qui est tout à fait impossible (en tout cas avec les lois de mathématiques utilisées et définies par je ne sais plus qui)
|
|
|
|
Wolfed
Invité
|
Posté le : Dim 25 Oct 2009, 13:15
|
|
|
En effet, c'est beacoup mieux comme ça ^^
Merci pour vos corrections !
Je pense que je vais faire pluieurs niveaux de difficulté, comme prévu plus haut.
|
|
|
|
pitilolo
Autorisation : Membre
Nb de messages : 23
Inscrit le : Dim 25 Oct 2009, 10:31
|
Posté le : Dim 25 Oct 2009, 13:30
|
|
|
pour le choix du niveau tu peut faire:
Code |
output(2,1,"choix du niveau
input Z
randInt(1,Z)üN
|
le niveau sera compri entre 1 et la variable Z
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
Sangohan38
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Dim 25 Oct 2009, 13:44
|
|
|
Ou bien tu met un seul Input:
Code | Input "CHOIX DU NIVEAU:",Z
Int randZ+1->N |
Sangohan38
|
|
|
|
Wirekey
Autorisation : Membre
Nb de messages : 240
Inscrit le : Mer 17 Jui 2009, 0:54
|
Posté le : Dim 25 Oct 2009, 13:55
|
|
|
Ou sinn avec un log décimal :
log 1 ( Premier niveau ) = 10
log 2 = 100
log 3 = 1 000
log 4 = 10 000
...
|
|
|
|
pitilolo
Autorisation : Membre
Nb de messages : 23
Inscrit le : Dim 25 Oct 2009, 10:31
|
Posté le : Dim 25 Oct 2009, 13:57
|
|
|
mais tu peut pas choisir la position de ton texte
c pour ca que je trouve que c mieux d'utiliser output
|
|
|
|