Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Faire effet de Saut en BASIC
Mgl64200 Hors ligne Membre Points: 649 Défis: 0 Message

Faire effet de Saut en BASIC

Posté le 28/04/2016 16:54

Bien l'bonjour !

Ma question est simplette : comment faire un effet de saut ? C'est à dire que j'arrive à faire sauter le personnage, mais j'aimerai simuler que si par exemple il chute, en même temps il puisse bouger de droite à gauche, pas seulement tomber comme une pierre. Merci d'avance pour votre aide !


Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

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 !

Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

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

It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Mgl64200 Hors ligne Membre Points: 649 Défis: 0 Message

Citer : Posté le 30/04/2016 19:17 | #


Merci à vous deux pour vos réponses toutes les 2 très utiles !
Toi t'es en train de lire ma signature là...
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

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 !
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Mgl64200 Hors ligne Membre Points: 649 Défis: 0 Message

Citer : Posté le 01/05/2016 14:24 | #


Grain de sel toutefois très utile
Toi t'es en train de lire ma signature là...

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 288 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