Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Jeu de reflexes avec toutes les touches
calcugeek le 13/06/2011 à 21:34
Ce jeu existe peut être déja mais je n'ai pas regardé toutes les pages alors voici le mien. le but est d'appuyer le plus vite possible sur les touches qui apparaissent. TOUTES LES TOUCHES PEUVENT APPARAITRE Y COMPRIS F(X) GRAPHE ETC DONC NE VOUS LAISSEZ PAS SURPRENDRE!!! sinon il y a un systeme de vies et de difficulté. Voila tout est dit je pense
Code
0->H
effecr
output(3,1,"+**+*++**++*+**+
output(4,6,"REFLEX
output(6,1,"+**+*++**++*+**+
for([theta],1,500
end
output(5,1," ETES VOUS GEEK?
pause
effecr
lbl [theta]
menu("** difficulté **","noob",A,"2+3=4",B,"pi=3,14",C,"GEEK","INSTRUCTIONS",E
end
lbl A:80->M:20->G:goto 1
lbl B:60->M:15->G:goto 1
lbl C:40->M:10->G:goto 1
lbl D:15->M:5->G:goto 1
lbl E
output(2,1,"C'EST PAS DUR! APPUIE SUR LES TOUCHES QUI CORRESPONDENT LE PLUS VITE POSSIBLE!
pause
goto 0
end
lbl 1
10entaleat(1,10)+entaleat1,6->x
if X=16 ou X=35 ou X=36 ou X=46 ou X=56 ou X=66 ou X=76 ou X=86 ou X=96 ou X=106
goto 1
effecr
lbl 2
if X= 11
output(2,2,"F(X)
if X= 12
output(2,2,"fenetre
if X= 13
output(2,2,"zoom
if X= 14
output(2,2,"trace
if X= 15
output(2,2,"graphe
if X= 21
output(2,2,"2nde
if X= 22
output(2,2,"mode
if X= 23
output(2,2,"suppr
if X= 24
output(2,2,"fleche gauche
if X= 25
output(2,2,"fleche haut
if X= 26
output(2,2,"fleche droite
if X= 31
output(2,2,"alpha
if X= 32
output(2,2,"x,t,[theta],n
if X= 33
output(2,2,"stats
if X= 34
output(2,2,"fleche bas
if X= 41
output(2,2,"maths
if X= 42
output(2,2,"matrice
if X= 43
output(2,2,"prgm
if X= 44
output(2,2,"var
if X= 45
output(2,2,"annul
if X= 51
output(2,2,"x^-1
if X= 52
output(2,2,"sin
if X= 53
output(2,2,"cos
if X= 54
output(2,2,"tan
if X= 55
output(2,2,"^
if X= 61
output(2,2,"x²
if X= 62
output(2,2,",
if X= 63
output(2,2,"(
if X= 64
output(2,2,")
if X= 65
output(2,2,"^
if X= 71
output(2,2,"log
if X= 72
output(2,2,"7
if X= 73
output(2,2,"8
if X= 74
output(2,2,"9
if X= 75
output(2,2,"*
if X= 81
output(2,2,"ln
if X= 82
output(2,2,"4
if X= 83
output(2,2,"5
if X= 84
output(2,2,"6
if X= 85
output(2,2,"-
if X= 91
output(2,2,"sto->
if X=92
output(2,2,"1
if X= 93
output(2,2,"2
if X= 94
output(2,2,"3
if X= 95
output(2,2,"+
if X= 102
output(2,2,"0
if X= 103
output(2,2,".
if X= 104
output(2,2,"(-)
if X= 105
output(2,2,"entrer
while K (different de)X
codetouche->k
if K (different de)X et K(different de)0:then:output(5,1,"perdu!:G-1->G:end
H-1->H
output(8,1,H
output(8,8,"points
output(7,1,G
output(7,8,"vies
if G=0:then:output(5,6,"perdu!:stop:end
end
H+M->H
output(8,1," [5 espaces]
output(8,1,H
output(8,1,"points
0->K
goto1
je suis évidemment ouvert à toute proposition
PS: pour les feignants (et je les comprend parfaitement!!) qui ne voudraient pas prendre une heure pour copier tous les if, il suffit de faire "2nde" "+" "3"
de valider puis de taper "if X=". Vous validez et ça met "err invalide" mais c'est pas grave. Vous faites "quitter", vous allez dans edit, vous ouvrez le programme reflex, et vous avez qu'à faire "2nde" "entrer" plein de fois en validant une fois sur deux. c'est une sorte de copier-coller. vous le refaites avec "output(2,2," " et ça vous fera gagner au moins 10 min de copie

Cyplejet le 14/06/2011 à 08:34
Ce ne serait pas plus court d'afficher le numéro de la touche plutôt? le programme serait moins lourd même si on perd en compréhension du jeu.
Puis aussi, ta "lbl 1" on peut aussi faire ça:
Code
10entaleat(1,10)+entaleat1,5->x
If x=35
26->x
La probabilité reste donc la même, et c'est plus léger et plus rapide.
calcugeek le 14/06/2011 à 08:44
Pas bête du tout le coup du x=35! C'est vrai que comme on a une touche en plus sur la deuxième ligne et une en moins sur la troisième, ça marche. Merci beaucoup.
En ce qui concerne le numéro de la touche c'est vrai que ça allège considérablement le programme mais c'est beaucoup plus dur et moins instinctif

De plus le programme est deja suffisamment rapide. Il n'y a pas de "temps mort".
sandro le 14/06/2011 à 08:53
Tu as oublié de vérifier dans ta série de tests presue au début (pour vériffier que le nombre aléatoire soit correct) de prendre en compte que [On] (101) est invalide.
Sandrocalcugeek le 14/06/2011 à 10:39
Ah oui exact. bah un petit "if x=35 ou x=101:26->x" ça change un petit peu les probas mais si peu que ça ne gêne pas

Tigre-obscure le 14/06/2011 à 12:44
Il est cool ce petit jeux de réflexion =) je le copie ce soir :p Enfin j'espère avoir le temps

coc5 le 14/06/2011 à 13:07
Simple et efficace.
Cependant, je pense que tu aurais pu gagner du temps en définissant une Str (chaîne de caractère) comme suit : "F(

fenetre zoom trace graphe 2nde mode suppr [...]" et ainsi de suite, laissant 10 caractères par signe.
Tu aurais juste eu à couper dedans via
sub(Str, /division de X pour faire correspondre au découpage/, 10).
Certes tu perds momentanément de la mémoire (pas tellement en fait), mais tu raccourcis d'autant l'espace pris par le programme lui-même et c'est plus facile à entretenir.
Enfin, c'était une astuce pour un futur programme évidemment, laisse ton jeu comme il est, ça convient déjà très bien.
calcugeek le 14/06/2011 à 15:04
Je vais y réfléchir. Il y a pas de limite de taille pour les chaines? parce que ça va être vachement long. Si on met 10 caractères par touche ça fait en tout 500 caractères!!!!! Et une chaine aussi longue prend forcément beaucoup de place non?calcugeek le 14/06/2011 à 15:41
Reflexion finie
on peut faire une chaine de plus de 500 caractères et ça prend 1 octet par caractère. Vu tous les if qu'on enlève ça revient à gagner de la place au final. Le seul problème c'est qu'il faudrait associer la valeur de x à une autre qui serait le départ de la coupe de la "souschaine". J'ai pensé à une liste mais la ça prendrait trop de mémoire associé à la chaine et au programme.
Pas insurmontable comme problème, mais cette solution améliorerait juste (peut être) un peu la vitesse, et comme je l'ai déjâ dit, le programme est fluide malgré les nombreux "if".
La seule optimisation possible de mon point de vue serait : au lieu de mettre output(2,2, à chaque if, on pourrait stocker le nom de la touche dans une chaine et mettre juste un output à la fin. je pense qu'on gagnerait de la place. Je me dépêche de vérifier ça et de mettre le nouveau programme.
calcugeek le 14/06/2011 à 15:49
Voila le prog. ça allège beaucoup en effet.
Code
0->H
effecr
output(3,1,"+**+*++**++*+**+
output(4,6,"REFLEX
output(6,1,"+**+*++**++*+**+
for([theta],1,500
end
output(5,1," ETES VOUS GEEK?
pause
effecr
lbl [theta]
menu("** difficulté **","noob",A,"2+3=4",B,"pi=3,14",C,"GEEK","INSTRUCTIONS",E
end
lbl A:80->M:20->G:goto 1
lbl B:60->M:15->G:goto 1
lbl C:40->M:10->G:goto 1
lbl D:15->M:5->G:goto 1
lbl E
output(2,1,"C'EST PAS DUR! APPUIE SUR LES TOUCHES QUI CORRESPONDENT LE PLUS VITE POSSIBLE!
pause
goto 0
end
lbl 1
10entaleat(1,10)+entaleat1,5->X
if X=35 ou X=101
26->X
goto 1
effecr
lbl 2
if X= 11
"F(X)->chaine1
if X= 12
"fenetre->chaine1
if X= 13
"zoom->chaine1
if X= 14
"trace->chaine1
if X= 15
"graphe->chaine1
if X= 21
"2nde->chaine1
if X= 22
"mode->chaine1
if X= 23
"suppr->chaine1
if X= 24
"fleche gauche->chaine1
if X= 25
"fleche haut->chaine1
if X= 26
"fleche droite->chaine1
if X= 31
"alpha->chaine1
if X= 32
"x,t,[theta],n->chaine1
if X= 33
"stats->chaine1
if X= 34
"fleche bas->chaine1
if X= 41
"maths->chaine1
if X= 42
"matrice->chaine1
if X= 43
"prgm->chaine1
if X= 44
"var->chaine1
if X= 45
"annul->chaine1
if X= 51
"x^-1->chaine1
if X= 52
"sin->chaine1
if X= 53
"cos->chaine1
if X= 54
"tan->chaine1
if X= 55
"^->chaine1
if X= 61
"x²->chaine1
if X= 62
",->chaine1
if X= 63
"(->chaine1
if X= 64
")->chaine1
if X= 65
"^->chaine1
if X= 71
"log->chaine1
if X= 72
"7->chaine1
if X= 73
"8->chaine1
if X= 74
"9->chaine1
if X= 75
"*->chaine1
if X= 81
"ln->chaine1
if X= 82
"4->chaine1
if X= 83
"5->chaine1
if X= 84
"6->chaine1
if X= 85
"-->chaine1
if X= 91
"sto->->chaine1
if X=92
"1->chaine1
if X= 93
"2->chaine1
if X= 94
"3->chaine1
if X= 95
"+->chaine1
if X= 102
"0->chaine1
if X= 103
".->chaine1
if X= 104
"(-)->chaine1
if X= 105
"enter->chaine1
output(2,2,chaine1
while K (different de)X
codetouche->k
if K (different de)X et K(different de)0:then:output(5,1,"perdu!:G-1->G:end
H-1->H
output(8,1,H
output(8,8,"points
output(7,1,G
output(7,8,"vies
if G=0:then:output(5,6,"perdu!:stop:end
end
H+M->H
output(8,1," [5 espaces]
output(8,1,H
output(8,1,"points
0->K
goto1
linkakro le 14/06/2011 à 17:47
Pas mal !
Je n'avais pas donné suite à cette idée quand elle est passée... Et c'est toi qui l'a fait.
Concernant la suggestion de la sous-chaîne : on aurait gagné du code mais perdu de la vitesse. Les sous-chaînes sont terriblement lentes quand on manipule une très longue chaîne.
sandro le 14/06/2011 à 20:35
Sinon essaie en suprimant tous les "-> Chaîne1" et en rempalçant "output(2,2,chaine1" par "output(2,2,Rép" ou "output(2,2,Ans" si ta TI est en anglais.
Sandrocalcugeek le 14/06/2011 à 21:13
Ok,bien vu.ça fait gagner 148 octets!!!!!!!!!!!!!!!
Qui dit mieux???

sandro le 14/06/2011 à 21:22
Suprime en plus le "[différend de]0" de la longue ligne presue à la fin, ça fait encore 2 octés de plus d'économisés.
SandroTigre-obscure le 14/06/2011 à 22:42
Je voudrai savoir si j'ai faux ou bon car j'ai vu une erreur a la ligne du menu(
Code
menu("** difficulté **","noob",A,"2+3=4",B,"pi=3,14",C,"GEEK","INSTRUCTIONS",E
Il manque pas le D du GEEK ^^"
si c'est bon c'est donc
Code
menu("** difficulté **","noob",A,"2+3=4",B,"pi=3,14",C,"GEEK",D,"INSTRUCTIONS",E
calcugeek le 15/06/2011 à 08:48
C'est vrai que j'aurais pu me relire

il manquait effectivement le D
Pour toi Sandro. le [different de 0] sert à ne pas perdre de vie en continu. On donne K=0 par défaut, ce qui ne correspond à aucune touche, comme ça on ne perd pas 5 vies par seconde!! J'ai essayé et c'est ce que ça me donne donc tant pis pour les 2 octets
DONC voila la version finale du jeu pour ceux que ça intéresse, pour un total de 1132 octets. Il est à noter qu'on a gagné 308 octets par rapport à la première version
Code
0->H
effecr
output(3,1,"+**+*++**++*+**+
output(4,6,"REFLEX
output(6,1,"+**+*++**++*+**+
for([theta],1,500
end
output(5,1," ETES VOUS GEEK?
pause
effecr
lbl [theta]
menu("** difficulté **","noob",A,"2+3=4",B,"pi=3,14",C,"GEEK",D,"INSTRUCTIONS",E
lbl A:80->M:20->G:goto 1
lbl B:60->M:15->G:goto 1
lbl C:40->M:10->G:goto 1
lbl D:15->M:5->G:goto 1
lbl E
output(2,1,"C'EST PAS DUR! APPUIE SUR LES TOUCHES QUI CORRESPONDENT LE PLUS VITE POSSIBLE!
pause
goto [theta]
end
lbl 1
10entaleat(1,10)+entaleat(1,5)->X
if X=35 ou X=101
26->X
effecr
lbl 2
if X= 11
"F(X)
if X= 12
"fenetre
if X= 13
"zoom
if X= 14
"trace
if X= 15
"graphe
if X= 21
"2nde
if X= 22
"mode
if X= 23
"suppr
if X= 24
"fleche gauche
if X= 25
"fleche haut
if X= 26
"fleche droite
if X= 31
"alpha
if X= 32
"x,t,[theta],n
if X= 33
"stats
if X= 34
"fleche bas
if X= 41
"maths
if X= 42
"matrice
if X= 43
"prgm
if X= 44
"var
if X= 45
"annul
if X= 51
"x^-1
if X= 52
"sin
if X= 53
"cos
if X= 54
"tan
if X= 55
"^
if X= 61
"x²
if X= 62
",
if X= 63
"(
if X= 64
")
if X= 65
"^
if X= 71
"log
if X= 72
"7
if X= 73
"8
if X= 74
"9
if X= 75
"*
if X= 81
"ln
if X= 82
"4
if X= 83
"5
if X= 84
"6
if X= 85
"-
if X= 91
"sto->
if X=92
"1
if X= 93
"2
if X= 94
"3
if X= 95
"+
if X= 102
"0
if X= 103
".
if X= 104
"(-)
if X= 105
"entrer
output(2,2,rep
while K (different de)X
codetouche->k
if K (different de)X et K(different de)0:then:output(5,1,"perdu!:G-1->G:end
H-1->H
output(8,1," [5 espaces]
output(8,1,H
output(8,8,"points
output(7,1," [2 espaces]
output(7,1,G
output(7,8,"vies
if G=0:stop
end
H+M->H
output(8,1," [5 espaces]
output(8,1,H
output(8,1,"points
0->K
goto1
sandro le 15/06/2011 à 09:37
A quoi sert le "End" à la ligne sous le menu de difficulté (sauf si c'est sensé etre un choix du menu, mais dans ce cas il manque l'éttiquette)?
Où est le "Lbl 0" je ne le trouve pas alors que je trouve des "Goto 0" ?
SandroSangohan38 le 15/06/2011 à 12:55
Citation
Ok,bien vu.ça fait gagner 148 octets!!!!!!!!!!!!!!!
Qui dit mieux???
Moi! Au lieu de mettre des if pour les chiffres de 1 à 9, on peut faire un calcul qui affiche le résultat moyennant quelques conditions que je stock dans des variables afin d'alléger la mémoire:
Code
.1K->L
10fpart(L->M
If L[>=]7 and L[<=]10 and M>1 and M<5
Disp 8-3int(L-6)+M
Malheureusement, avec cette méthode, j'obtient -2 quand j'appuie sur 0.
Sangohan38
coc5 le 15/06/2011 à 12:58
Qui dis mieux ? Moi~
Tu peux condenser la partie sous le menu :
Code
lbl [theta]
80->M:20->G
menu("** difficulté **","noob",1,"2+3=4",B,"pi=3,14",C,"GEEK",D,"INSTRUCTIONS",E
lbl E
Disp "C'EST PAS DUR!","APPUIE SUR LES","TOUCHES QUI","CORRESPONDENT","LE PLUS VITE"
pause "POSSIBLE!
goto [theta]
end
lbl B:60->M:15->G:goto 1
lbl C:40->M:10->G:goto 1
lbl D:15->M:5->G
lbl 1
10entaleat(1,10)
Rep + entaleat(1+(Rep>99),5+(Rep=20)-(Rep=30))->X
effecr
Les modifications :
* Les variables
M et
G sont initialisées pour le niveau "noob" avant le menu, ainsi on passe directement à
lbl 1 si ce choix est prit, les paramêtrages des autres niveaux restent intouchés.
* On fait passer les
lbl de paramétrage de
M et
G (pour les niveaux) juste avant le lbl 1, comme ça on épargne un Goto 1 devenu ainsi inutile ("
Goto1:Lbl1" à la suite)
* Les instructions sont données pas un
Disp plutôt qu'un
Output et tout plein d'espaces entre les mots. Également à noter le gain d'un octet par l'utilisation de
Pause et sa possibilité d'afficher une chaîne de caractère
* Suppression du "
If X=35 ou X=101 : 26->Xen évitant ainsi ta méthode pas très rigoureuse qui donnait deux fois plus de chance que le reste de tomber sur la flèche de droite. Note que la formule de l'aléatoire a été modifiée : Par exemple
(Rep=20) renvoie 1 si on est sur la zone des flèches, 0 sinon, ça permet de couvrir comme il faut les exceptions 101, 35 et 26.
J'espère que tu auras saisie l'intérêt de ces améliorations.
calcugeek le 15/06/2011 à 14:14
Pas mal tout ça mais ça prend plus de place. On reprend 18 octets.
Mais bon t'as raison c'est plus rigoureux au niveau des probas. Comme ça y'a plus rien à reprocher de ce coté. Et une ligne de calcul avec plein de entaleat ça fait toujours plus classe

(même si c'est pas forcément ce qu'on cherche quand on fait des progs)
Et merci du tuyau pour le pause"possible! j'aurais jamais deviné que cette fonction pouvait afficher du texte

coc5 le 15/06/2011 à 14:22
Hmm, plus de place ? Étrange. Mais c'est uniquement la correction de probabilité qui fait ça, le reste diminue la taille prise par le programme.
Tu es certain qu'avec les 4 modifications la place est tout de même plus importante ? Ça me parait très étrange (surtout que même pour l'aléatoire, on supprime le If etc tout de même)calcugeek le 15/06/2011 à 15:11
Non c'est bon ça allège en fin de compte. C'est parceque j'avais mis une modif sur le forum et pas sur ma calto, ce qui faisait que le prog était plus lourd. Ca fait 1149 octets au final. pas mal pour un programme qui doit afficher n'importe quelle touche

merci à tous!!!!
Tigre-obscure le 15/06/2011 à 16:06
Maintenant tu peux l'édite la version final *Ou pas* qui prend 1149 Octets?
Comme ça je recopie

Sangohan38 le 15/06/2011 à 20:15
Je vois que tu n'as pas pris en compte ma modification: trop lent à exécuter ou oublie?
Sangohan38calcugeek le 15/06/2011 à 21:00
C'est un oubli mais je vois pas comment l'insérer. Tu pourrais t'en charger? je supprimerai mon post avec tout le prog une fois que t'auras mis le tien ok?Sangohan38 le 15/06/2011 à 21:22
Code
0->H
effecr
output(3,1,"+**+*++**++*+**+
output(4,6,"REFLEX
output(6,1,"+**+*++**++*+**+
for([theta],1,500
end
output(5,1," ETES VOUS GEEK?
pause
effecr
lbl [theta]
80->M:20->G
menu("** difficulté **","noob",1,"2+3=4",B,"pi=3,14",C,"GEEK",D,"INSTRUCTIONS",E
lbl E
Disp "C'EST PAS DUR!","APPUIE SUR LES","TOUCHES QUI","CORRESPONDENT","LE PLUS VITE"
pause "POSSIBLE!
goto [theta]
end
lbl B:60->M:15->G:goto 1
lbl C:40->M:10->G:goto 1
lbl D:15->M:5->G
lbl 1
10entaleat(1,10)
Rep + entaleat(1+(Rep>99),5+(Rep=20)-(Rep=30))->X
effecr
if X= 11
"F(X)
if X= 12
"fenetre
if X= 13
"zoom
if X= 14
"trace
if X= 15
"graphe
if X= 21
"2nde
if X= 22
"mode
if X= 23
"suppr
if X= 24
"fleche gauche
if X= 25
"fleche haut
if X= 26
"fleche droite
if X= 31
"alpha
if X= 32
"x,t,[theta],n
if X= 33
"stats
if X= 34
"fleche bas
if X= 41
"maths
if X= 42
"matrice
if X= 43
"prgm
if X= 44
"var
if X= 45
"annul
if X= 51
"x^-1
if X= 52
"sin
if X= 53
"cos
if X= 54
"tan
if X= 55
"^
if X= 61
"x²
if X= 62
",
if X= 63
"(
if X= 64
")
if X= 65
"^
if X= 71
"log
if X= 75
"*
if X= 81
"ln
if X= 85
"-
if X= 91
"sto->
.1X->Y
10fpart(Y->Z
If Y[>=]7 and Y[<=]10 and Z>1 and Z<5
Output(1,1,8-3int(Y-6)+Z
if X= 95
"+
if X= 102
"0
if X= 103
".
if X= 104
"(-)
if X= 105
"entrer
output(2,2,rep
while K (different de)X
codetouche->K
if K (different de)X et K(different de)0:then:output(5,1,"perdu!:G-1->G:end
H-1->H
output(8,1," [5 espaces]
output(8,1,H
output(8,8,"points
output(7,1," [2 espaces]
output(7,1,G
output(7,8,"vies
if G=0:stop
end
H+M->H
output(8,1," [5 espaces]
output(8,1,H
output(8,1,"points
0->K
goto1
Ce code est valable si "1" par exemple est équivalent à Output(1,1,"1
Sangohan38
sandro le 15/06/2011 à 21:24
encore de quoi gagner 2 octés : remplace les 2 premières lignes par
et la 2nde et 3ème de la fin par
Code
EffVar Koutput(8,1,"points
Sandro
PS : le texte à afficher doit être en MAJUSCULES à moins que tu n'utilise les variables stats (le h par example n'y est même pas) (pour les touches à appuyer et la fin) ou que tu soit un traitre qui nous poste un programme pour 83+
calcugeek le 16/06/2011 à 13:27
Non je ne suis pas un traitre

je n'ai même pas la ti83, j'ai que la 82 stats.
Merci sangohan pour le post. Je supprime le mien comme promis vu que le tiens est plus "final"

linkakro le 16/06/2011 à 16:41
Sauf que la 82stat est une variante de la 83
Ne pas confondre 83 et 83+.
calcugeek le 16/06/2011 à 19:25
Oui bah le resultat est le même : je n'ai ni l'une ni l'autre.

na
sandro le 16/06/2011 à 21:01
Je parlais bien de TI83+, pas de TI83, car sauf erreur de ma part, les TI83+ ont les minuscules (du moins on peut les installer). De toute façon, je ne voie pas pourquoi une TI83 n'aurrait pas sa place ici à part le nom, vu que c'est entre TI82 et TI82stats.
Sandro
PS : désolé, je n'ai rien personnellement contre ceux qui ont des TI83+ ou plus et qui postent ici (sauf à la limite quand ils posent des questions qui n'on rien à faire avec les TI82(stats(.fr)) tel que les applications ou la mémoire flash. Et j'ai en particulier rien contre toi (tant plus il y a de membres actifs (et d'invités qui postent), tant plus le forum est actif et donc interrecent). Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.