Bonjour,

Je me suis lancer dans ma première programmation d'un saut grâce aux lois de Newton mais je bloque déjà

En fait je ne comprends pas très bien pourquoi mais j'ai l'impression que mon personnage se fiche royalement de la gravité …

Voici mes différentes parties:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: cp1252 -*-
import pygame
from math import sqrt, cos, sin
import time as time
 
class Newton():
 
    def __init__(self):
 
        pygame.init()
        self.g = 9.81
        self.m = 10
 
    def sauter(self,x,y,t,perso):
 
        if x == 0:
            a = 90
 
        else:
            a = 45
 
        y = y/self.m
        x = x/self.m
        v0 = sqrt(pow(x,2) + pow(y,2))
        vx = v0*cos(a)
        h = 0  #Je ne sais pas comment déterminer la hauteur h ici :/
        vy = self.g * t + v0* sin (a)
        y = 1/2*self.g*pow(t,2)+v0*(sin(a)) *t + h 
        x = v0*cos(a) * t
 
        rect = perso.move(x,y)
        return rect
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pygame
from Newton import * 
 
class perso():
 
    def __init__(self):
        pygame.init()
        self.allie = pygame.sprite.Group()
        self.ennemi = pygame.sprite.Group()
        self.gravitee = Newton()
 
    def princi(self,coord):
 
        self.perso = pygame.sprite.Sprite()
        self.perso.image = pygame.image.load("Images/Mob/Perso/dk_bas.png").convert_alpha()
        self.perso.rect = self.perso.image.get_rect()
        self.perso.rect = self.perso.rect.move(coord)
        self.allie.add(self.perso)
 
    def avancer(self,coord,typ):
 
        if typ == "princi":
            self.perso.rect = self.perso.rect.move(coord)
 
    def saut(self,x,y,t,perso):
 
        if perso == "princi":
            self.perso.rect = self.gravitee.sauter(x,y,t,self.perso.rect)
 
 
 
 
    def afficher(self,fen):
 
        try:
            self.allie.draw(fen)
        except AttributeError:
            pass
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import pygame
from perso import *
import time as time
 
 
 
class moteur():
    def __init__(self):
 
        pygame.init()
 
        self.pers = perso()
        taille_x = 500
        taille_y = 500
        self.fenetre = pygame.display.set_mode((taille_x,taille_y),pygame.RESIZABLE)
        self.decor = pygame.sprite.Group()
 
 
    def add(self, typ,coord):
 
        if typ == "mur":
 
            self.mur = pygame.sprite.Sprite()
            self.mur.image = pygame.image.load("Images/Decor/Objets/mur.png").convert_alpha()
            self.mur.rect = self.mur.image.get_rect()
            self.mur.rect = self.mur.rect.move(coord)
            self.decor.add(self.mur)
 
        if typ == "perso":
            princi = self.pers.princi(coord)
 
 
    def add_fond(self,fond):
        self.fond = pygame.image.load(fond).convert()
 
    def partie(self):
        boucle = True
 
        fin = time.time() + 20
 
        x = 0
        y = 10
 
        while boucle:
            pygame.time.Clock().tick(30)
            debut = time.time()
            t = fin - debut
            if fin - debut > 0:
                fin = fin - 1
                self.pers.avancer((x,y),"princi")
                self.pers.saut(x,y,t,"princi")
 
            for event in pygame.event.get():
 
                if event.type == pygame.QUIT:
                    boucle = False
 
 
 
            self.fenetre.blit(self.fond,(0,0))
            self.decor.draw(self.fenetre)
            self.pers.afficher(self.fenetre)
            pygame.display.flip()
Quelqu'un pourrait m'aider a corriger mes calculs ?

Merci d'avance pour votre aide