Saut qui ne s'éxecute pas

Le problème exposé dans ce sujet a été résolu.

Bonjour, J'ai réussit a programmer les mouvements d'un personnage dans un jeu video en fonction des lois de Newton mais je n'arrive pas à le faire sauter maintenant :( . Je sais que le problème vient de ma fonction t qui est toujours (proche de ) 0 mais je ne sais pas comment je pourrais changer ça… Si vous voulez, je vous fournit le projet avec les images pour que vous n'ayez plus qu'a le lancer pour voir ou est l'erreur:

http://www.cjoint.com/data/0Exl1jmfbqM.htm

Merci beaucoup de votre aide :)

+0 -0

Je ne regarde pas le projet, car je considère que tu devrais avoir un code minimal représentant le problème, et c'est simple, suffit de présenter une fonction saut ou jump par exemple… avec ce qui ne va pas !

Pour moi mais je suis pas du tout un spécialiste pygame, c'est simplement une fonction ressemblant à

1
2
3
def jump(personage):
    if not personage.y: # if y==0
        personage.y += 20

Après faut détailler sans doute avec les temps, en ajoutant 1 pixel toutes les 100 ms en rafraîchissant régulièrement ton screen par exemple, je sais pas, faut tester…

Salut, En fait ma fonction gère à la fois les sauts et la gravité.

Marty_and_Doc

Tu vas pouvoir faire en sorte de faire deux fonctions et les tester séparément alors.

Étant donné que j'utilise les lois de Newton, la seule chose qui va changer est la vitesse vy… donc en théorie je n'ai pas besoin d'une fonction jump

Marty_and_Doc

Les bugs qui ne sont pas "censés" arriver sont des erreurs à un autre endroit du programme, généralement.

J'ai rapidement regardé ton programme pour mon cas, et je pense avoir au moins deux pistes d'erreurs, mais comme l'a dit ton voisin du dessus, avec un code minimal (ou même un dessin de ce que fait vraiment ton programme), ton problème serait déjà réglé.

En fait, il y a beaucoup de choses dans ton code qui relèvent de mauvaises pratiques, comme le fait que le comportement de tes fonctions (sauts) peuvent changer en passant des valeurs spéciales (x=0). Les variables ne sont pas dans le bon scope la plupart du temps (v0 ..) et ta manipulation du temps est douteuse à certains endroits (puisque oui, t petit, sachant que tu prends le debut a la fin de la boucle, et la fin au début de la boucle).

Salut alexandre, Je prends note de tes conseils et je vais essayer de les mettres en pratique dans mon code :) (c'est vrai que comme je débute un peu en programmation 2d et que c'est le premier saut que je code j'ai encore un peu de mal au niveau des classes…)

Cependant je viens de me rendre compte de mon erreur: : dans la classe moteur à la ligne 60, j'ai écrit : self.princi.rect = self.gravitee.sauter(x,0,t,self.princi.rect)

au lieu de self.princi.rect = self.gravitee.sauter(x,y,t,self.princi.rect).

Je prends quand même note de vos conseils à toi et fred 1599.

Merci beaucoup de votre aide à tous les deux :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte