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: passQuelqu'un pourrait m'aider a corriger mes calculs ?
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()
Merci d'avance pour votre aide
Partager