Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Comment ralentir un programme?
maxlamenace le 17/12/2010 à 14:09
Salut tout le monde, j'ai créer un jeu de tir dans l'espace pour voir et il marche très bien. Mais voila, mon seul problème est que le programme va trop vite et les vaisseau sur lesquels je doit tirer bouge super vite ce qui rend le programme nul.
Merci d'avance.

metallica le 17/12/2010 à 14:25
Ecrit:
Autant de fois que tu veux. Plus il y en a plus ça ralentit.
Le "!" se trouve en faisant {math}+{gauche}+{4}
Persalteas le 17/12/2010 à 14:50
si tu veux un temps variable (plus ou moins long selon le niveau de jeu), tu utilise un For(
L est la variable de niveau.
écris:
ainsi, si tu est au niveau 1, le programme fait 100 tours de boucle inutiles (ce qui le ralentit), si tu es au niveau 2, il en fait 200...
etc.
mais là, ça te fait un vaisseau qui va de moins en moins vite au fur et à mesure des niveaux.
j'imagine que c'est mieux l'inverse:
dans ce cas:
Code
:For(X,1,100(11-L)):End
ainsi, au niveau 1, il fait 1000 tours inutiles, au niveau 2 il en fait 900, au niveau 3, 800...
enfin voilà.
linkakro le 17/12/2010 à 22:47
Et on peut metre des 69! dans la boucle
Je pense à cette autre façon pour la même chose.
Code
For(X,1100,100L,-1):End
Persalteas le 18/12/2010 à 14:50
on peut aussi mettre plusieurs boucles les unes dans les autres.
j'ai aussi vu des programmes, ou, selon le niveau, la vitesse n'est pas la même, mais ou on ne peut pas dépasser le niveau 6:
tout simplement comme ça:
L est la variable de niveau:
(69-(10L+L))!
(69-(10L+L))!
(69-(10L+L))!
mais alors, ça pèse lourd....patate007 le 18/12/2010 à 18:49
Personellement, j'aime bien faire ça :
Code
:0->[théta] //Au début de ton code.
//Dans ta boucle :
:[théta]+1->[téta]
:if [théta]=3:Then
//Tes instructions à ralentir comme l'incrémentation de tes variables de déplacement.
:0->[théta]
:end
Comme ça je peus choisir ce que je ralentit et ce que je ne ralentit pas

Tu peus remplacer le 3 par le chiffre que tu veus (plus c'est grand, plus c'est ralentit) et aussi par une variable pour faire un système de niveaux

J'espère que le code est clair, sinon je peus donner un exemple.
Persalteas le 20/12/2010 à 11:05
moi je veux bien l'exemple stp parce que je vois pas comment tu l'applique à un prog.lover-lol le 20/12/2010 à 12:00
Ben voilà :
@=THETA
Code
0->@
While A=!=152
Input "",A
If A>100:Then
Lbl Z
If @ =!= 3:Then
For (X,0,100
@+1->@
Goto Z
If @=3:Then
Ton code
Voilà, moi c'est ce que j'utilise, après je ne sais pas si tu fais pareil

patate007 le 20/12/2010 à 17:42
Mmmh... Non, pas vraiment.
Je prend l'exemple avec un petit programme qui fait avancer un rond de gauche à droite avec une certaine vitesse...
Code
:EffEcr
:1->A
:0->[théta]
:15->X
:Lbl A
:Output(4,A,"O
:[théta]+1->[théta]
:If [théta]=X:Then
:EffEcr //L'effacement de l'écran sera ralentit...
:A+1->A //...ainsi que l'incrémentation ma variable A
:0->[théta] //Je remet le théta à 0 pour le prochain déplacement
:end
:If A=16:Goto 1
:Goto A
:Lbl 1
:1->A
:X-1->X
:Goto A
Si je met EffEcr après Lbl A, mon rond clignotera. Bon... ce n'est pas très utile mais je suis sûr que tu trouveras une bonne utilité

homer__simpsons le 22/12/2010 à 10:22
ou sinon si tu ne veux pas sacrifier de variable tu fait:
Code
:BinAléat(x,0 //plus X est grand plus l'attente
sera longue ((invonvenient: block le clavier))
En anglais BinAléat==randBin
[Math]>[<]>[7]
linkakro le 22/12/2010 à 17:09
Et si le X est trop grand, c'est comme si tu avais mis un virus. Tu devras enlever les piles pour l'arêter.lover-lol le 22/12/2010 à 17:12
Oui et quand tu enlèveras les piles, Mem Cleared !patate007 le 22/12/2010 à 17:16
Et ça marche pas si on appuit sur ON ? J'ai pas vraiment envis de tester =°Persalteas le 22/12/2010 à 17:55
ça ne marche pas si tu appuies sur On.
c'est un bon virus, Binaléat.linkakro le 22/12/2010 à 18:12
Cela ne devient un virus que vers 1000 ou plus. Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.