Bon, je suis actuellement en train de regarder en détail ton code. Même si je ne peux pas y jouer pour l'instant, je peux au moins te donner des conseils d'optimisations : comment faire pour que ton code prenne moins de place, et potentiellement s'exécute plus vite. Tu as surement déjà lu ça.
Alors, je regarde un peu en détail tout ça, je mets à la suite ce que je trouve.
Dans "PLAGUE" :
{1500000, 2, 0, 0, 1, 0, 1, 0, 10, 1, 1E10, 0} → List 1 //remplace par :
{15E5, 2, 0, 0, 1, 0, 1, 0, 10, 1, 1E10, 0} → List 1
Je questionne par ailleurs l'utilité d'avoir ce programme qui remplit simplement une matrice et qui bouffe de précieux octets pour rien. Tu peux déjà enregistrer la Matrice dans la mémoire de la calculatrice et l'intégrer à ton fichier à télécharger.
Autrement, dans le programme "~STAT" par exemple :
Locate 20, Z, "←"
GetKey -> r
r != 0 => Locate 20, Z, " "
r = 28 => Dsz Z
r = 37 => Isz Z
Z > 7 => 3 -> Z
Z < 3 => 7 -> Z
Plusieurs choses.
r != 0 => Locate 20, Z, " " //peut se remplacer par :
r => Locate 20, Z, " "
Parceque r agit ici comme un booléen. Si la valeur est "VRAIE", autrement dit si elle n'est pas nulle, alors la condition est vérifiée. Or c'est exactement ce que tu veux vérifier. Donc si r n'est pas nul, le Locate s'effectue.
Ensuite, tu effectues 4 conditions à la suite. Pour la rapidité et le nombre d'octets, je me demande s'il y a mieux. Est-ce que quelque chose comme :
Z + (r = 37) - (r = 28) → Z //plus rapide que :
r = 28 => Dsz Z
r = 37 => Isz Z // ?
Je ne sais pas trop.
Toujours dans STAT ; je vois dans ton code que tu n'élimines pas les caractères inutiles :
Locate 1, 2, List 1[1]
Locate 1, 3, List 1[1] / List 1[11] * 100
//peut être remplacé par :
Locate 1, 2, List 1[1
Locate 1, 3, List 1[1] / E2 *List 1[11
De plus, dans le programme, tu répètes la commande "ClrText" à chaque condition "If Z=... Then...". contentes-toi de la mettre une seule fois au tout début :
Ton code actuellement :
If Z = 3 :Then
ClrText
[...]
IfEnd
If Z = 4 :Then
ClrText
[...]
IfEnd
If Z = 5 :Then
ClrText
[...]
IfEnd
...
//Ce que je recommande : 8)
ClrText
If Z = 3 :Then
[...]
IfEnd
If Z = 4 :Then
[...]
IfEnd
If Z = 5 :Then
[...]
IfEnd
À la fin de ~STAT, il y a un lbl1. J'imagine que c'est pour sortir du prog. Plus haut, tu utilises un "Goto 1". Il y a plus simple : utilise la commande "Stop"
Dans le sous-programme "~STRSPEC" :
[...]If List 1[8] = 0 :Then [...]
//Même remarque : tu peux simplifier.
If !List 1[8 :Then
//Autrement dit, si List1[8 est "FAUX", la condition est vérifiée. "FAUX" correspond à la valeur nulle, 0.
Pour économiser des octets, tu pourrais attribuer à deux variables les valeurs de List1[8]et List1[7] pour ne pas avoir à recopier ça à chaque fois.
List1[8→E
List1[7→F
If F = 8 : Then...
If !E : Then...
[...]
Dans ~TMPS :
(Int (List 1[9] * 100000)Ran# ) → S //Tu peux alléger tout ça
Int (Ran# E5 *List 1[9) → S //devrait fonctionner, je pense.
Je vais pas refaire tout ton code, mais voici en résumé des astuces d'optimisations, car chaque octet d'économiser est précieux. Vraiment précieux. En espérant t'avoir aider. Lorsque je retrouverai ma calto, j'essaierai ton jeu.
|