Posté le 28/04/2016 16:54
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 243 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 30/04/2016 11:51 | #
Pour simuler un saut il faut imaginer l'équation d'une parabole, où le personnage part vite initialement mais ralentit progressivement jusqu'à commencer à retomber.
Pour cela c'est assez simple, tu peux prendre par exemple l'équation f(x)=-0.25*x²+50
Simulons le saut d'un point :
"ViewWindow 1,127,0,1,63,0
For 0→A To 20 Step 0.5
Cls
PlotOn A,-0.25*A²+50
Next"
Ici plus précisément tu as la chute d'un point. Pour avoir le saut complet il faudrait faire : "For -20→A To 20 Step 0.5".
Pour que ton saut soit en ligne droite, il suffit de remplacer "PlotOn A,-0.25*A²+50" par "PlotOn 20,-0.25*A²+50" (ou une autre constante que 20)
Pour que le saut soit plus lent, tu peux réduire le pas (Step 0.5) ou l'augmenter pour avoir un saut plus rapide (mais moins beau)
Tu peux aussi rajouter dans ta boucle un Getkey pour que tu puisses diriger ton saut. Cette fois on va prendre une boucle While pour avoir plus de liberté sur le pas et deux autres variables : B et C.
"ViewWindow 1,127,0,1,63,0
0→A : 1→B : 0→C
While1=1
A+0.25*B→A
C+0.25→C
Cls
Getkey=27⇒1→B
Getkey=38⇒-1→B
PlotOn A,-0.25*C²+50
C≥20⇒Break
WhileEnd"
Ainsi lors de ton saut, lorsque tu appuies sur la touche de gauche, B prend la valeur -1 et A diminue de 0.25 plutôt que d'augmenter. La variable C joue le rôle du compteur (un peu comme la boucle For) mais est indépendant de toute modification de A.
Même chose de précédemment, tu peux faire le saut en entier en attribuant à C la valeur -20. (ça ne tombe pas pile sur le bord inférieur de l'écran, je sais.)
C'est une idée que je te donne, un peu à l'état brut. C'est à toi de te l'approprier afin de l'optimiser et de l'adapter à ton propre programme. Au plaisir !
Citer : Posté le 30/04/2016 12:09 | #
Sinon tu peux utiliser une variable A qui stocke l'accélération de l'objet. Voici le principe.
Au début de ton saut tu initialise A avec une valeur positive. Ensuite tu actualise Y (si c'est ta variable qui contient l'ordonnée du perso) comme ceci Y + A -> Y. Et enfin tu applique la gravité à A avec A - 10 -> A . Lorsque A devient négatif le perso retombe. Ensuite lorsque ton perso touche le sol, il te suffit de mettre 0 à A.
While(1)
Getkey -> G
Y < 1 => 0->A
G = 28 => 25 -> A
Y + A -> Y
A - 10 -> A
WhileEnd
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 30/04/2016 19:17 | #
Merci à vous deux pour vos réponses toutes les 2 très utiles !
Citer : Posté le 01/05/2016 06:50 | #
De rien ! Pour une fois que je suis en mesure d'ajouter mon petit grain de sel dans ce vaste forum !
Citer : Posté le 01/05/2016 14:24 | #
Grain de sel toutefois très utile