Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1140
Réponses : 9
Type : discussion
Etat : réponses autorisées

Mini snak

come1995 le 30/09/2011 à 18:33
bon je suis en seconde j'ai redoubler et comme je m’embêtait en physique j'ai crée sa. pourriez vous m'aidez a l’améliorer ou de le raccourcir ou d’améliorer sa rapidité. je tient a préciser que c'est le premier programme que je crée or ceux donner en exercice et qui sont très facile et sans aucun intérêt.

A la 5eme ligne en partant du bas comment enlever le Then qui fait perdre beaucoup de vitesse au programme??

merci

:code

:EffEcr
:0->H
:entAleat(1,7)->A
:entAleat(1,16)->B
:Lbl Z
:entALeat(1,7)->C
:entAleat(1,16)->D
:Lbl K
:EffEcr
:Disp H
:Outout(C,D,"8
:output(A,B,"0 //zero et pas O
:codeTouche->K
:If K=24
:B-1->B
:if K=26
:B+1->B
:if K=25
:A-1->A
:if K=34
:A+1->A
:if A=C et B=D
:Then
:H+1->H
:Goto Z
:Else
:Goto K
come1995 le 30/09/2011 à 18:46
j'ai aussi l'intention de faire un menu.
come1995 le 30/09/2011 à 18:50
j'ai oublier de preciser que l'on ne peut pas perdre...... goutte.gif
linkakro le 30/09/2011 à 20:13
Code
:EffEcr
:DelVar H
:entAleat(1,7)->A
:entAleat(1,16)->B
:Lbl Z
:entALeat(1,7)->C
:entAleat(1,16)->D
:Lbl K
:EffEcr
:Disp H
:Outout(C,D,"8
:output(A,B,"0
:codeTouche->K
:B-(K=24)+(K=26->B
:A-(K=25)+(K=34->A
:If A-C ou B-D
:Goto K
:H+1->H
:Goto Z

Il reste maintenant à :
-le convertir en graphique,
-à empêcher les sorties d'écran
-que le serpent continue d'avancer seul en ligne droite
-donner de la longueur au serpent
-gérer les collisions en graphique avec pxl-Test.
...?

graphique :
EffDessin pour effacer l'écran
Texte(Y,X,"text" comme pour output
Il faudra changer les coordonnées dans texte et dans les autres fonctions.

sorties d'écran :
* retenir à l'intérieur de l'écran
min(16,max(1,X-(K=24)+(K=26->X
Cette ligne gère à la fois les sorties et le contrôle.
Modifie 16 ou 1 selon les bords de l'écran
*ramener de l'autre côté
X-16(X>16)+16(X<1->X Les extrèmes sont 16 et 1

stocke K dans une autre variable uniquement s'il correspond à un déplacement et utilise cette variable à la place de K dans le code de déplacement.
-> le serpent continuera en ligne droite seul

Le plus difficile reste à faire : allonger le serpent et bien sûr effacer progressivement son trajet. (plus gérer des collisions avec sa queue)
Nous le traîterons peut-être si on règle le reste.
sandro le 30/09/2011 à 20:24
Code
:EffEcr
:0->H
:entAleat(1,7->A     //ici tu peut enlever la seconde parenthèse
:entAleat(1,16->B     //ici tu peut enlever la seconde parenthèse
:While H-128    //tant que le sepant n'ocupe pas toute les cases
:entALeat(1,7->C     //ici tu peut enlever la seconde parenthèse
:entAleat(1,16->D     //ici tu peut enlever la seconde parenthèse
:While A-C ou B-D     //tant que le serpant n'a pas mangé
:EffEcr
:Disp H       //à ta place, je le mettrait plutôt à la dernière ligne du programme, sinon, ça peut t'effacer une partie du serpant
:Outout(C,D,"8
:output(A,B,"0
:codeTouche->K
:B-(K=24)+(K=26->B   //simplification en utilisant le fait que vrai=1 et faux=0
:A-(K=25)+(K=34->A   //idem
:End     //fin de la boucle de déplacement
:H+1->H
:End     //fin de la boucle globale (un "repas")


Remplacer les Goto par des boucles est un bon choix en TI-Basic


Sandro

PS : j'ai pas testé, mais ça devrait marcher
linkakro le 30/09/2011 à 21:02
N'oublie pas que "=/=" peut dans ce code se remplacer par "-".

Les boucles permettent une légère accélération mais tu pratiques deux tests au lieu d'un.
Je doûte de l'intérêt du deuxième test mais cela reste efficace.
sandro le 30/09/2011 à 23:43
Merci, j'édite
come1995 le 05/10/2011 à 18:10
merci linkakro mais je ne sait pas comment intégrer ce que tu ma dit . j'ai essayé mais rien ne change
sandro le 05/10/2011 à 18:27
En gros, il t'expliquait juste que :
Code
If expression1 =/= expréssionB

peut-être remplacé par
Code
If expression1-expression2


Celà est plus court et plus rapide (un test est plutôt lent à réaliser. If peut-être remplacé par une autre fonction qui est soumise à condition (ex: While, Reapeat)

Sandro
linkakro le 05/10/2011 à 20:54
J'ai expliqué pas mal d'autres trucs dont certains déjà pris en compte dans ton code.
Mais je n'ai plus le temps de bidouiller un programme à chaque fois que je veux montrer des choses à quelqu'un.
(Ce week-end avec de la chance sinon c'est comprommis.)