Bonjour,
Je me suis lancer dans ma première programmation d'un saut grâce aux lois de Newton mais je bloque déjà XD
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:
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 |
import pygame from Newton import *
class perso():
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 | 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 |
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
+0
-0