π
<-

Programme GetKey

Programme GetKey

Unread postby Reuberts » 19 Dec 2010, 16:36

Bonjour,
Je suis tout nouveau concernant la programmation en Tibasic (et en programmation tout court d'ailleurs ^^) et j'aimerais donc que vous m'aidiez à faire quelques petits progrès :#oups#:

J'ai donc en guise d'exercice programmer un petit truc dont le principe est le suivant :
-La ti affiche un chiffre (allant de 41 a 45)
-l'utilisateur doit appuyer sur la touche correspondant au chiffre affiché (si c'est 41, il appuiera sur "math")
-si c'est bon, on affiche "gagné" et on regénère un nouveau chiffre
-si c'est faux, on regénère directement un nouveau chiffre

Voici donc mon code :

Code: Select all
Lbl 01
randInt(11,15=A
Output(7,14,A
If getKey=A
Disp "Gagne"
Goto 01
If getKey!=A
Goto 01


Le seul (gros) problème, c'est que la Ti me génère plein d'entiers en meme temps! C'est à dire que j'ai le droit à un défilement de chiffre sans arret, ce qui rend le "jeu" impraticable.

Si vous pouvez m'aider, ce serait avec plaisir =)
Initié au TiBasic :#gni#:
... Et aime ca!! :#langue#: :#langue#:
User avatar
Reuberts
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 96%
 
Posts: 29
Joined: 19 Dec 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1S

Re: Programme GetKey

Unread postby critor » 19 Dec 2010, 16:47

Bonjour!


En fait le petit problème, c'est que "getKey" n'attend pas l'appui sur une touche.
Il renvoi 0, si aucune touche n'est pressé, ce qui compte comme "perdu" immédiatement.

Je te propose donc de rajouter un 2ème couple lbl/Goto pour attendre l'appui sur une touche avant de dire que c'est perdu.

Lbl 01
randInt(11,15=A
Output(7,14,A
Lbl 02
getKey=K
If K=0
Goto 02

If K=A
Disp "Gagne"
Goto 01

Si tu préfères, cela peut aussi se faire avec une boucle (ce qui est plus "officiel" par rapport au programme d'algorithmique).

Lbl 01
randInt(11,15=A
Output(7,14,A
0=K
While K=0
getKey=K
End

If K=A
Disp "Gagne"
Goto 01


Quand ton programme sera terminé, n'hésite pas à le signer et à la publier sur notre portail! : :):
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42396
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Programme GetKey

Unread postby Kiligolo » 19 Dec 2010, 17:06

J'ai fait un truc pareil sauf que ça le fait avec toutes les touches de la calculatrices. :#langue#:
Je propose ça:
Code: Select all
randInt(11,15-A  //nombre aléatiore
Output(7,14,A  //On l'affiche
DelVar KWhile K=!A  //On efface K puis on attend que l'utilisateur ai pressé la bonne touche
getKey-K   //On capte la touche pressée enregistrée dans K
End  //fin de la boucle
Pause "GAGNE   //L'utilisateur a pressé la bonne touche=Il a gagné


Après, tu peux le faire avec du temps
  1. Nombre aléatoire
  2. On l'affiche
  3. On met le score à 0
  4. On lui donne un certain temps
  5. Début de la boucle
  6. On affiche le temps
  7. On affiche le score
  8. On attends la touche pressée
  9. Si c'est la bonne touche, on peut augmenter le temps
  10. On décrémente le temps
  11. Fin de la boucle = il n'y a plus de temps, l'utilisateur à perdu
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: Programme GetKey

Unread postby Reuberts » 19 Dec 2010, 17:18

Wow! Forum sympas, rapide, parfait quoi! ^^

Quant à la solution, j'avoue que je n'y aurais jamais penser!
Merci ^^

En ce qui concerne la publication de ce programme.... j'y réfléchis =p
Initié au TiBasic :#gni#:
... Et aime ca!! :#langue#: :#langue#:
User avatar
Reuberts
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 96%
 
Posts: 29
Joined: 19 Dec 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1S

Re: Programme GetKey

Unread postby Reuberts » 20 Dec 2010, 12:48

ReBonjour les gens !

Alors, j'ai tout bien réfléchi, et puis je me suis dit que j'allais faire un autre prog dans le meme style (raison pour laquelle je n'ouvre pas de nouveau topic, il s'agit encore d'un programme se basant sur l'utilisation des getKey ^^)

Alors principe :
-Un chrono s'affiche à l'écran : il commence a 2000 et diminue de 10 à chaque fois
-On appuie sur "Entrer" le plus rapidement possible pour que le chrono ne tombe pas à 0 (ce qui est irrémédiable dans tous les cas car à chaque appui sur entrer on n'augmente que de 7 le chrono)
-Le nombre de fois appuyer sur "entrer" est affiché à la fin du programme.

Voici le code :
Code: Select all
ClrHome
2000 - X
0 - S
Repeat X=0
X-3 - X

getKey - K
If K=105
Then
X+7- X
S+1- S

Output(8,4,X
Output(8,1,S
End


Problème :#tsss#: :
Le chrono diminue et quand on appuie sur entrer, il augmente bien mais le score augmente tout seul!

Merci de m'éclaircir ;)
Initié au TiBasic :#gni#:
... Et aime ca!! :#langue#: :#langue#:
User avatar
Reuberts
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 96%
 
Posts: 29
Joined: 19 Dec 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1S

Re: Programme GetKey

Unread postby critor » 20 Dec 2010, 13:13

Il doit te manquer un "End".

Il faut un "End" pour fermer le If/Then, et un "End" pour fermer le Repeat.
Les 2 devant être au bon endroit.


Sinon, comprends bien qu'à 6MHz, ta calculatrice est rapide.
Quand tu appuieras sur entrée pendant une fraction de seconde, pour la calculatrice qui aura bouclé plein de fois pendant ce laps de temps, ça comptera comme plusieurs appuis sur Entrée.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42396
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Programme GetKey

Unread postby Kiligolo » 20 Dec 2010, 14:10

Je te propose ce code:
Code: Select all
ClrHome
2000-X
DelVar SRepeat not(X
X-3-X
getKey - K
X+7(K=105-X
S+(K=105-S
Output(8,4,X
Output(8,1,S
End

  • La différence entre Delvar S et 0-S n'est pas dans la taille puisque 0-S fais trois octets et la commande DelVar en fait 2 mais avec DelVar, tu n'est pas obligé de retourner à la ligne pour la commande suivante (dans la plus part des cas) ce qui te fait économiser 1 octet.
  • not(X est l'équivalent de X=0 =économie d'un octet.
  • S+(K=105-S est un booléen, c'est-à-dire que K=105 est égal à 1 si c'est vrai (si enter est pressé) et 0 si c'est faux. Donc si on ne presse pas enter ça revient à dire S+0-S
    et si c'est le contraire S+1-S
  • X+7(K=105-X est aussi un booléen donc si on ne presse pas enter ça revient à dire X+7*0-X et si c'est le contraire X+7*1-X
Voilà. :#top#:
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: Programme GetKey

Unread postby Reuberts » 20 Dec 2010, 14:21

Waaa super ^^
J'imagine que ce que tu as fait Kiligolo s'appelle "l'optimisation d'un code", chose que je n'ai pas encore abordé dans ma "formation" ^^

Mais c'est classe en tout cas :#langue#:

Sinon concernant ma version du code, j'ai trouvé ou mettre le "End" qui manquait ^^

Problème rencontré:
-Si on appuie sur rien, c'est a dire si S=0, le chrono s'arrete bien à 0
-Si on commence a appuyer pour retarder l'échéance du chrono, PATAPOUF! le chrono passe dans les négatifs =(

Je creuse pour voir d'ou vient le pb :#delire#:
Initié au TiBasic :#gni#:
... Et aime ca!! :#langue#: :#langue#:
User avatar
Reuberts
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 96%
 
Posts: 29
Joined: 19 Dec 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1S

Re: Programme GetKey

Unread postby critor » 20 Dec 2010, 14:38

Reuberts wrote:Waaa super ^^
J'imagine que ce que tu as fait Kiligolo s'appelle "l'optimisation d'un code", chose que je n'ai pas encore abordé dans ma "formation" ^^



Effectivement Reuberts, si tu fais référence à l'algorithmique qui est enseignée officiellement au lycée depuis l'année dernière, c'est quelque chose que tu ne devrais pas voir.

Tout simplement parce qu'un algorithme n'est pas un programme. Il y a une différence, même si bon nombre de professeurs emploieront indifféremment ces 2 mots, les nouveaux livres de maths qu'ils utilisent étant loin d'être au point.


Kiligolo te donne des astuces pour économiser de la mémoire sur un modèle bien spécifique: ta calculatrice. Et c'est très bien de les connaître.

Mais il ne faudra surtout pas (dans ton intérêt) que ce style d'astuce déteigne sur tes travaux écrits éventuels dans ce domaine: l'algorithme (ou le programme) qui te sera demandé devant être indépendant d'un modèle précis. Il doit être adaptable à tous les modèles, et facilement lisible (ce qui n'est pas le cas du code de Kiligolo pour ce dernier point).
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42396
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Programme GetKey

Unread postby critor » 20 Dec 2010, 14:43

Reuberts wrote:Problème rencontré:
-Si on appuie sur rien, c'est a dire si S=0, le chrono s'arrete bien à 0
-Si on commence a appuyer pour retarder l'échéance du chrono, PATAPOUF! le chrono passe dans les négatifs =(

Je creuse pour voir d'ou vient le pb :#delire#:


On peut t'aider si tu nous donnes le nouveau code du programme. :;):
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 53.5%
 
Posts: 42396
Images: 17115
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Next

Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 8 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2927 utilisateurs:
>2879 invités
>41 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)