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.
Tous | Tutoriels du Mercredi | Basic Casio | C/C++/ASM | LuaFX | Graphisme | Transferts | Logiciels | Diverses astuces

Calculatrice
Toutes
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC

Retour à la liste des tutoriels
Tutoriel Casio : Les bases d'un programme de tir type Worms
Tutoriel rédigé le : 2006-11-19 12:38  par Neuronix  Catégorie : Basic Casio  Calculatrice : Toutes

Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (66 commentaires)

Les bases d'un programme de tir type Worms
C'est un classic, incontournable, meme simple c'est toujours drole, on veut tous en faire un dans sa vie de programmeur

Mais toi tu sais pas faire ! Heureusement que planete-casio est là !

Je vais donner une explication physique (on étudie le mouvement dit parabolique en Term mais c'est pas trop dur à comprendre ) puis je ferai un tuto qui applique quelques points pour un programme (on peut simplifier le probleme).

Donc ne flippez pas devant les calculs!

Etude sans forces de frottements (vent, air) :

Systeme : la balle, de masse m
Referentiel : terrestre supposé galiléen
Forces :
- Le poids : P = m.g avec g dirigé vers le sol
Et oui c'est tout !

Le tir est dans un plan de l'espace donc on peut ramener toute l'étude à un plan (O,x,y)

Le vecteur acceleration a a donc pour coordonnées :
a ( 0 , -g )
Par intégration (voir en bas) on trouve le vecteur vitesse v :
v (0 + cte1 , -g * t + cte2)
les constantes sont en fait les projections du vecteur vitesse initiale sur les axes (x,y)
On a donc cte1 = Vo * cos (µ) et cte2 = Vo * sin (µ)
v ( Vo * cos (µ) , -g * t + Vo * sin (µ) )
On intégre à nouveau pour obtenir les coordonnées r de la balle en fonction du temps :
r ( Vo * cos (µ) * t + cte1 , -(1/2) * g * t^2 + Vo * sin (µ) * t + cte2 )
Ici les constantes sont en fait les coordonnées initiales de la balles (là d'ou on tire en fait), on prenra l'origine pour la suite donc cte1 = 0 = cte2

On a donc un système en fonction de t, le temps :
x = Vo * cos (µ) * t
y = -(1/2) * g * t^2 + Vo * sin (µ) * t

En posant t = x / ( Vo * cos (µ) )
Et en remplacant dans y= ... on a y en fonction de x donc on élimine le temps

y= -(1/2) * g * ( x / ( Vo * cos (µ) ) )^2 + Vo * sin (µ) * ( x / ( Vo * cos (µ) ) )

y = - ( g * x^2 ) / ( 2 * Vo^2 * cos (µ)^2 ) + x * tan (µ)

Bon ceci est l'approche physique telle que vous la verrez en Term

Pour la programmation d'un jeu de tir il nous suffit de voir comment se deplace la balle.

- Elle part de Xo,Yo à Vo avec un angle µ.
- au cours du mouvement la gravité agit sur la balle

Donc en fait il suffit de projeter le vecteur vitesse initial sur x,y pour obtenir les coordonnées de la balle à la date t1, t2 etc

depX = Vo * cos (µ)
depY = Vo * sin (µ)

donc considérons une boucle de tir :

?->A
?->F
Fcos A->U
Fsin A->V
0->C~D
Do
C+U->C
D+V->D
Lpwhile...


On va avoir un tir "droit" à l'infini.
En ajoutant la gravité :

?->A
?->F
?->G
Fcos A->U
Fsin A->V
0->C~D
Do
C+U->C
D+V->D
V-G->V
Lpwhile...


Et voila une belle parabole
Note : attention, utilisez une valeur tres faible pour la gravité du genre 0.3 au début

Si on ajoute le vent :

?->A
?->F
?->G
?->W
Fcos A->U
Fsin A->V
0->C~D
Do
C+U->C
D+V->D
V-G->V
U+W->U
Lpwhile...


Faites des essais c'est marrant de voir la balle revenir avec le vent

Intégration :
Le contraire de la dérivation, elle sert pour les calculs d'intégrales (calcul de l'aire délimité par Y=0 et une courbe sur un intervalle par exemple)
Dans la calculatrice, le signe intégrale est un grand S().

S(1) = x + cte (rappelez vous que diff(cte) = 0 )
S(cte) = cte * x + cte2
S(x) = (x^2)/2 (en effet diff((x^2)/2) = 2 * (1/2) * x' * x = x )


Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (66 commentaires)

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