Gestion de la Vélocité en Python avec Pygame
Résolu/Fermé
Creuilcreuil
Messages postés
44
Date d'inscription
jeudi 1 janvier 2015
Statut
Membre
Dernière intervention
7 septembre 2015
-
3 juin 2015 à 02:00
Creuilcreuil Messages postés 44 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 7 septembre 2015 - 19 juil. 2015 à 06:54
Creuilcreuil Messages postés 44 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 7 septembre 2015 - 19 juil. 2015 à 06:54
A voir également:
- Gestion de la Vélocité en Python avec Pygame
- Citizen code python avis - Accueil - Outils
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
2 réponses
ThorPy
Messages postés
1
Date d'inscription
samedi 18 juillet 2015
Statut
Membre
Dernière intervention
18 juillet 2015
18 juil. 2015 à 17:51
18 juil. 2015 à 17:51
Salut,
Tu ne définis pas quel est le résultat voulu. Une vitesse constante ? une accélération ?
De plus, au niveau de ce qui sera effectivement obtenu à l'écran et visible par l'utilisateur, il faut que tu aies un mécanisme de régulation des FPS (frame per second = images par seconde). Autrement, suivant l'ordinateur utilisé, le jeu ira plus ou moins vite. Tu peux faire cela en déclarant un objet de type pygame.time.Clock() il me semble, puis en appelant la méthode tick(fps) de ton objet Clock à chaque tour de boucle. (je te laisse checker la documentation python pour un exemple plus précis, ou sinon tu peux te tourner vers une librairie qui donne ce genre de mécanismes par défaut)
Tu ne définis pas quel est le résultat voulu. Une vitesse constante ? une accélération ?
De plus, au niveau de ce qui sera effectivement obtenu à l'écran et visible par l'utilisateur, il faut que tu aies un mécanisme de régulation des FPS (frame per second = images par seconde). Autrement, suivant l'ordinateur utilisé, le jeu ira plus ou moins vite. Tu peux faire cela en déclarant un objet de type pygame.time.Clock() il me semble, puis en appelant la méthode tick(fps) de ton objet Clock à chaque tour de boucle. (je te laisse checker la documentation python pour un exemple plus précis, ou sinon tu peux te tourner vers une librairie qui donne ce genre de mécanismes par défaut)
Creuilcreuil
Messages postés
44
Date d'inscription
jeudi 1 janvier 2015
Statut
Membre
Dernière intervention
7 septembre 2015
2
19 juil. 2015 à 06:54
19 juil. 2015 à 06:54
Merci, mais désolé j'avais oublié de fermé ce topic, voila le code au quelle je suis arrivé, il et pas parfait mois pour comprend le base de la vélocité je pense bien m'etre débrouillé
#Python 3.4 from pygame.locals import * import pygame, time, math window_size = (1000, 600); pygame.init(); window = pygame.display.set_mode(window_size); pygame.display.set_caption("V-Force"); Fun = [0, 0, 0]; Bgc = [255, 255, 255]; class Player: def __init__(self, x = window_size[0] /2, y = window_size[1] /2, speed = 0.75, speed_max = 75, fx = 0.25, fy = 0.25): self.x = x; self.vx = 0; self.fx = fx; self.y = y; self.vy = 0; self.fy = fy; self.speed = speed; self.speed_max = speed_max; def move(self, dir): if dir == 'up': self.vy += -self.speed; elif dir == 'down': self.vy += self.speed; elif dir == 'left': self.vx += -self.speed; elif dir == 'right': self.vx += self.speed; def update(self): self.x += self.vx; self.y += self.vy; if self.vx > self.speed_max: self.vx = (self.speed_max); elif self.vx < (-self.speed_max): self.vx = -(self.speed_max); if self.vy > self.speed_max: self.vy = (self.speed_max); elif self.vy < (-self.speed_max): self.vy = -(self.speed_max); if self.vx > 0: self.vx += -self.fx; if self.vx < 0: self.vx = 0; elif self.vx < 0: self.vx += self.fx; if self.vx > 0: self.vx = 0; if self.vy > 0: self.vy += -self.fy; if self.vy < 0: self.vy = 0; elif self.vy < 0: self.vy += self.fy; if self.vy > 0: self.vy = 0; def set(self, x, y): self.x = x; self.y = y; def get(self): return { 'x':self.x, 'y':self.y, 'vx':self.vx, 'vy':self.vy, 'speed':self.speed, 'speed_max':self.speed_max, 'fx':self.fx, 'fy':self.fy, }; def Display(window, x, y, s, *text): Font = pygame.font.Font(None, s); count = y; for line in text: window.blit(Font.render(line, True, (255,255,255)), (x, count)); count += s; player = Player(); done_prog = False; while not done_prog: pressed = pygame.key.get_pressed(); cube_size = 30; pygame.time.Clock().tick(60); for event in pygame.event.get(): if event.type == QUIT: done_prog = True; if pressed[K_UP]: player.move('up'); if pressed[K_DOWN]: player.move('down'); if pressed[K_LEFT]: player.move('left'); if pressed[K_RIGHT]: player.move('right'); player.update(); stat = player.get(); if stat['x'] > window_size[0] + cube_size /2: player.set(math.ceil(window_size[0]/6.25) - cube_size, stat['y']); if stat['y'] > window_size[1] + cube_size /2: player.set(stat['x'], 0 - cube_size); if stat['x'] < math.ceil(window_size[0]/6.25) - cube_size: player.set(window_size[0], stat['y']); if stat['y'] < - cube_size: player.set(stat['x'], window_size[1]); Fun[2] += 1; if Fun[2] == 255: Fun[2] = 0; Fun[1] += 1; if Fun[1] == 255: Fun[1] = 0; Fun[0] += 1; if Fun[0] == 255: Fun = [0, 0, 0]; Bgc[2] -= 1; if Bgc[2] == 0: Bgc[2] = 255; Bgc[1] -= 1; if Bgc[1] == 0: Bgc[1] = 255; Bgc[0] -= 1; if Bgc[0] == 0: Bgc = [255, 255, 255]; pygame.display.flip(); window.fill(Bgc); pygame.draw.rect(window, Fun, [stat['x'], stat['y'], cube_size, cube_size]); pygame.draw.rect(window, (0, 0, 0), [0, 0, math.ceil(window_size[0] /6.25), window_size[1]]); Display(window, 10, 10, 20, 'X:' + str(stat['x']), 'Y:' + str(stat['y']), '___________________', 'VX:' + str(stat['vx']), 'VY:' + str(stat['vy']), '___________________', 'FX:' + str(stat['fx']), 'FY:' + str(stat['fy']), '___________________', 'SPEED:' + str(stat['speed']), 'SPEED_MAX:' + str(stat['speed_max']), '___________________', 'K_UP:' + str(pressed[K_UP]), 'K_DOWN:' + str(pressed[K_DOWN]), 'K_LEFT:' + str(pressed[K_LEFT]), 'K_RIGHT:' + str(pressed[K_RIGHT]), '___________________', 'CBC:' + str(Fun), 'BGC:' + str(Bgc), '___________________', 'Python 3.4.3', 'Pygame 1.9.2a0', '', '', '', '', '___________________', 'CREDIT:Creuilcreuil', );