Programmation usuelle.

Voir le sujet précédent Voir le sujet suivant Aller en bas

Programmation usuelle.

Message par nikitouzz le Jeu 3 Jan - 11:26

J'ai toujours fais de jolie programme, mais que je m'attaque a la physique d'un programme je bloque! alors, ma qquestion est la suivante, si quelqu'un peut m'expliquer comment gerer les sauts et la gravité cela me serait benefique je sais que builderboy a rediger d'excellent tuto mais j'ai du mal avec l'anglais, merci d'avance.

_________________
[Vous devez être inscrit et connecté pour voir cette image]
Invité née le 0 a aujord'huis 0 ans et a posté 11 messages... je suis derrière vous

2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

3x3x1 : 0.73secondes / 3x3x2 : 30.55secondes / 3x3x3 : 5.97secondes / 3x3x4 : 1.09minutes / 3x3x5 : 1.46minutes / 3x3x6 : 2.06minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07

nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 21
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par mdr1 le Jeu 3 Jan - 12:25

sachiix69 a écrit:J'ai toujours fais de jolie programme, mais que je m'attaque a la physique d'un programme je bloque! alors, ma qquestion est la suivante, si quelqu'un peut m'expliquer comment gerer les sauts et la gravité cela me serait benefique je sais que builderboy a rediger d'excellent tuto mais j'ai du mal avec l'anglais, merci d'avance.

J'ai toujours fait de jolis programmes, mais quand je m'attaque à la
physique d'un programme, je bloque (espace) ! Alors, ma question est la suivante,
si quelqu'un peut m'expliquer comment gérer les sauts et la gravité, cela
me serait bénéfique, je sais que builderboy a rédigé d'excellents tutos,
mais j'ai du mal avec l'anglais, merci d'avance.

Ben t'utilises les équations différentielles, ou encore tu calcules les nouvelles positions à chaque nouvel instant donné en ajoutant le travail élémentaire de chaque force.

mdr1
Or 1
Or 1

Sexe : Masculin
Age : 26
Messages : 124
Date d'inscription : 16/03/2011
Points Forum : 4
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-82
  • - TI-83+
  • - TI-84 Pocket.fr
  • - TI-Nspire CX

TI-84 Pocket.fr


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par linkakro le Jeu 3 Jan - 14:53

Le travail est une énergie mécanique transmise. Donc le terme est mal choisi.

Je ne suis pas dans le bain pour l'aspect codage. Je me limite déjà à la mécanique du point en référentiel galiléen. (tu diras après si tu veux aussi les référentiels et les solides...)

On revient effectivement aux équations différentielles pour élaborer le mouvement rigoureusement.
En programmation on effectue plutôt des approximations avec des déplacements élémentaires (->différentielles) sur des intervalles de temps très courts.
C'est la méthode d'Euler en maths pour approcher les courbes. (on peut aussi parler de dévelloppement limité pour ceux qui connaissent)

EDIT: ne pas confondre une équation différentielle et le concept de la différentielle. L'équation est une relation entre une fonction et ses dérivées, et la différentielle est un concept représentant des quantité infinitésimales qui interviennent dans certaines notations des équations différentielles.

Puisque la vitesse est la dérivée de la position, on écrit v=dx/dt ou encore v*dt=dx
On écrit alors la relation : x2=x1+dx=x1+v1*dt
En remplaçant la différentielle dt (concept infinitésimal) par de petites valeurs de temps, on est très proche de la réalité et on tombe sur Euler car v*dt=déplacement_élémentaire.

Ainsi ajoûter un élémentaire entre deux instants séparés d'un temps dt permet de simuler un mouvement réaliste, même si la vitesse est variable.
Si le temps entre les instants est celui entre deux frames de ton jeu, et que le jeu est suffisamment rapide, alors cela suffit.
Même méthode pour le lien entre accélération et vitesse.

On fixe une accélération de pesanteur g. Dans la réalité c'est 9.81m*s-² sur Terre à Paris mais dans un jeu ce sera probablement des pixels *s-².
Si ton objet est isolé, son accélération est simplement celle de la pesanteur.
Sinon il faut ajoûter les accélérations des autres forces exercées sur ton objet.
Par la loi de Newton, on a F=m*a. Donc on aura a=g+(F1+...+Fn)/m.

Dès qu'il y a d'autres forces, c'est tout un exercice, même avec des approximation. Je ne traiterai pas d'autre force spontanément.

Si tu veux déterminer le mouvement en tout instant pour une accélération constante et rigoureusement, on obtient :
v=v0+a*(t-t0)
x=x0+v0*(t-t0)+a*(t-t0)^2
Pour la vitesse constante on a juste a=0.

Bien sûr on projète tout cela sur les axes, et on effectue les calculs sur chaque axe.
(bien sûr il n'y a pas de pesanteur sur l'axe horizontal, et sur l'axe vertical il ne faut pas se tromper de signe : on a "-g" si l'axe est vers le haut).

Au final ce qui t'intéresse est normalement
vx:=vx+ax*dt;
vy:=vy+ay*dt;
x:=x+vx*dt;
y:=y+vy*dt;


Dernière édition par linkakro le Jeu 3 Jan - 17:19, édité 1 fois

linkakro
Or 4
Or 4

Sexe : Masculin
Age : 22
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par nikitouzz le Jeu 3 Jan - 17:08

O_o hum je vais relire cela avec plus d'attention ce soir car la je ne comprend pas trop (des equations differenciel en axe ^^ je vais m'amuser Langue )

_________________
[Vous devez être inscrit et connecté pour voir cette image]
Invité née le 0 a aujord'huis 0 ans et a posté 11 messages... je suis derrière vous

2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

3x3x1 : 0.73secondes / 3x3x2 : 30.55secondes / 3x3x3 : 5.97secondes / 3x3x4 : 1.09minutes / 3x3x5 : 1.46minutes / 3x3x6 : 2.06minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07

nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 21
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par matrefeytontias le Ven 4 Jan - 9:12

Hem ... O_o'

J'ai déjà fait des jeux avec de la gravité (même plusieurs gravités -> Gravity Walls en a 4) j'ai jamais eu besoin de tout ça ... Franchement je trouve que sur calculatrice ce problème de précision ne sert à rien puisque les pixels sont gros comme mon poing fermé.

Ce que j'ai toujours fait et fais toujours, c'est ça :
Code:
Xspeed+X->X
Yspeed+X->X
Et on dirige (X/Y)speed avec les flèches.

Pour s'approcher de la réalité, on dit que Xspeed veut toujours valoir 0 et Yspeed veut toujours augmenter. C'est normal puisque la friction de l'air et du sol freine l'objet soumis à ces deux variables, et quand on tombe, on accélère.

Tout ce que t'as à faire dans ton programme c'est ça (pseudocode) :
Code:
ajouter Xgrav à X
ajouter Ygrav à Y

Si X>0
 décrémenter X
SinonSi X<0
 incrémenter X
FinSi
Si getKey(gauche)
 enlever 2 à Xgrav
FinSi
Si getKey(droite)
 ajouter 2 à Xgrav
FinSi
Si touche_le_sol et getKey(touche_de_saut)
 Mettre Ygrav à coefficient_saut
FinSi

AfficherImage(X,Y,joueur)


Dernière édition par matrefeytontias le Ven 4 Jan - 16:36, édité 1 fois

_________________
[Axe] [Vous devez être inscrit et connecté pour voir ce lien], aussi compatible 82 stats !

[Vous devez être inscrit et connecté pour voir ce lien]
[Vous devez être inscrit et connecté pour voir ce lien]

Spoiler:

matrefeytontias
Platinum 1
Platinum 1

Sexe : Masculin
Age : 19
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - Lua Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-83+.fr
  • - TI-Nspire CAS

TI-83+.fr


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par linkakro le Ven 4 Jan - 14:44

Puisque la précision d'une TI est faible, on est d'accord sur la conclusion.
Seulement j'ai essayé de justifier avant de sortir le résultat principal.

Là où tu es bien plus pratique que moi, c'est quand tu simules les frictions de l'air sans te demander le vecteur à chaque instant. Tu le fixes une bonne fois et c'est marre.
Et puis aussi quand tu utilises un coefficient saut sans te demander ce à quoi il correspond physiquement, puisqu'on en a pas besoin.

Voilà, matref t'as montré le côté le plus pratique. (en tout cas pour la méca du point, puisqu'on a pas besoin du reste)

linkakro
Or 4
Or 4

Sexe : Masculin
Age : 22
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par mdr1 le Ven 4 Jan - 16:45

matrefeytontias a écrit:Hem ... O_o'

J'ai déjà fait des jeux avec de la gravité (même plusieurs gravités -> Gravity Walls en a 4) j'ai jamais eu besoin de tout ça ... Franchement je trouve que sur calculatrice ce problème de précision ne sert à rien puisque les pixels sont gros comme mon poing fermé.

Ce que j'ai toujours fait et fais toujours, c'est ça :
Code:
Xspeed+X->X
Yspeed+X->X
Et on dirige (X/Y)speed avec les flèches.

Pour s'approcher de la réalité, on dit que Xspeed veut toujours valoir 0 et Yspeed veut toujours augmenter. C'est normal puisque la friction de l'air et du sol freine l'objet soumis à ces deux variables, et quand on tombe, on accélère.
Ben c'est ce qu'on a dit : la méthode d'Euler.

mdr1
Or 1
Or 1

Sexe : Masculin
Age : 26
Messages : 124
Date d'inscription : 16/03/2011
Points Forum : 4
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-82
  • - TI-83+
  • - TI-84 Pocket.fr
  • - TI-Nspire CX

TI-84 Pocket.fr


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par matrefeytontias le Ven 4 Jan - 16:47

Oui mais j'ai déjà vu des implémentations plus compliquées. Là j'en propose une (très) simple.

_________________
[Axe] [Vous devez être inscrit et connecté pour voir ce lien], aussi compatible 82 stats !

[Vous devez être inscrit et connecté pour voir ce lien]
[Vous devez être inscrit et connecté pour voir ce lien]

Spoiler:

matrefeytontias
Platinum 1
Platinum 1

Sexe : Masculin
Age : 19
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - Lua Nspire
  • - Ndless Nspire
Calculatrices :
  • - TI-83+.fr
  • - TI-Nspire CAS

TI-83+.fr


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par nikitouzz le Ven 4 Jan - 18:27

Merci c'est tout ce qu'il me fallait Content merci a vous

_________________
[Vous devez être inscrit et connecté pour voir cette image]
Invité née le 0 a aujord'huis 0 ans et a posté 11 messages... je suis derrière vous

2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

3x3x1 : 0.73secondes / 3x3x2 : 30.55secondes / 3x3x3 : 5.97secondes / 3x3x4 : 1.09minutes / 3x3x5 : 1.46minutes / 3x3x6 : 2.06minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07

nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 21
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :
  • - TI-Basic Z80
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
  • - TI-Basic 68K
  • - TI-Basic Nspire
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par kindermoumoute le Lun 7 Jan - 20:48

Pourquoi faire simple quand on peut faire compliqué ? Clin Oeil

kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 22
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

Re: Programmation usuelle.

Message par Contenu sponsorisé Aujourd'hui à 14:04


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum