2017-02-09 2 views
1

J'ai fait un script Tycoon pour la TI-84 Plus CE et je ne pense pas que ce soit vraiment bon. Je ne suis pas très bon en programmation de calculatrice et je ne sais pas grand-chose. Je viens d'en apprendre quelques-unes par un ami et quelques vidéos YouTube.Script Tycoon pour TI-84 Calculator

Je me demandais, est-ce que quelqu'un sait comment je peux améliorer ce script pour le rendre meilleur?

Voici ce que j'ai:

Btw la -> est la clé de la STO.

:ClrHome 
:13->S 
:5->T 
:13->X 
:5->Y 
:0->B 
:5->C 
:1->D 
:Output(T,S,"CASH:" 
:Output(Y,X,"M" 
:getkey->A 
:X->S 
:Y->T 
:If A=26 
:Then 
:X+1->X 
:If X=27 
:26->x 
:End 
:If A=34 
:Then 
:Y+1->Y 
:If Y=11 
:10->Y 
:End 
:If A=25 
:Then 
:Y-1->Y 
:If Y=1 
:2->Y 
:End 
:If A=11 
:Then 
:Stop 
:End 
:If X=D and Y=C 
:Then 
:B+1->B 
:Output(1,6,B 
:End 
:If B≥200 
:Then 
:6->E 
:1->F 
:Output(E,F,"5" 
:End 
:If X=F and Y=E and B≥200 
:Then 
:B+5->B 
:Output(1,6,B 
:End 
:If B≥1500 
:Then 
:7->G 
:1->H 
:Output(G,H,"10" 
:End 
:If X=H and Y=G and B≥1500 
:Then 
:B+10->B 
:Output(1,6,B 
:End 
:End 
+2

Je vote pour fermer cette question hors-sujet car il pourrait mieux appartenir à codereview.stackexchange.com (en supposant que cela fonctionne correctement), dans le cas non, il faut dire ce qui doit être amélioré, quel est le problème. –

Répondre

2

futures questions de cette nature doivent être posées à codereview.SE, mais je vais jeter un oeil à quelques optimisations pour vous de toute façon.

Je chercherai seulement des optimisations de taille, pas de vitesse (bien qu'elles puissent rendre votre programme plus rapide). Voici quelques-unes:

  • Tout d'abord, quatre de ces lignes peut avoir leurs citations de fin Suppressions (-4)
  • 0->B:5->C peut être DelVar B5->C (vous pouvez supprimer les deux points suivants) (-1)
  • Vous n'avez pas besoin d'un Then ou End avec votre instruction If si la condition est d'une ligne. Ainsi, :If A=11:Then:Stop:End peut juste être :If A=11:Stop (-4)

Maintenant, pour les principales optimisations que je vois:

En premier lieu, et peut-être plus évident, est le fait que vous appelez :Output(1,6,B beaucoup. Il semble que vous pouvez simplement déplacer ce bloc en dehors de votre If, et retirez le Then et End pour -4 octets chaque

Deuxièmement, que vous ne pouvez pas avoir connaissance, sont les commandes min( et max(, qui renvoient la plus petit ou plus grand de deux valeurs ou d'une liste, respectivement. Voici un exemple:

:If A=26 
:Then 
:X+1->X 
:If X=27 
:26->X 
:End 

Le code ci-dessus est équivalent à:

:If A=26 
:min(26,X+1->X 

Il semble que vous pouvez utiliser cette optimisation quatre fois, ce qui est important, car il rend le programme plus petit, plus rapide et plus lisible.

Dans l'ensemble, J'espère avoir été en mesure de vous aider. Si vous avez des questions, s'il vous plaît demander :)

+0

alors que cette optimisation m'a aidé, le point de la question était de savoir s'il y avait un moyen de rendre le magnat réel meilleur avec la fonction du magnat. –

+1

Eh bien, je suis objective dans ma réponse - vous demandez quelque chose de plus subjectif (c'est-à-dire quoi de mieux?). Puisque vous ne m'avez pas dit ce qui est «meilleur» (autre que plus rapide/plus petit que j'ai adressé), je ne peux pas faire plus mais deviner.Et, si vous avez ces idées, vous pouvez toujours les essayer vous-même :) heureux que je pourrais aider un peu – Timtech