Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de vitesse avec Pygame

Sujet résolu
9 avril 2021 à 19:11:28

Bonjour à tous , je débute en programmation et travaille actuellement sur un jeu 2d en utilisant pygame dans le cadre de ma spécialité NSI(numérique et sciences informatiques) de terminale.

Néanmoins, j'ai rencontré rapidement un problème que je n'arrive pas à régler même en ayant parcouru divers forums.

Mon problème est simplement que mon personnage se déplace bien trop vite et que même en ayant mis la vitesse au minimum, celui-ci continue d'aller beaucoup trop vite et traverse toute ma fenêtre en 2 secondes si je reste appuyé sur ma touche.

l'appel des méthodes pour se déplacer:

    if pygame.key.get_pressed()[pygame.K_d]:
                game.player.move_right()
    elif pygame.key.get_pressed()[pygame.K_q] and game.player.rect.x>0:
        game.player.move_left()

les méthodes en elles-mêmes:

import pygame
from shuriken import Projectile

#classe joueur
class Player(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()
        self.health=100
        self.maxhealth=100
        self.attack=10
        self.velocity=1
        self.all_projectiles= pygame.sprite.Group()
        self.image=pygame.image.load('ninja_noir.png')
        self.rect=self.image.get_rect()
        self.rect.x=45
        self.rect.y=495

    def launch_projectile(self):
        #creer une instance à partir de la classe Projectile
        self.all_projectiles.add(Projectile(self))
    
    def move_right(self):
        self.rect.x+=self.velocity

    def move_left(self):
        self.rect.x-=self.velocity

Et ma fenêtre est pourtant bien en 1080 par 720:

import pygame
from game import Game
pygame.init()

#generer fenêtre

pygame.display.set_caption("Pynja")
ecran=pygame.display.set_mode((1080,720))


#arrière-plan du jeu:
background= pygame.image.load('decor_agrandi.jpg')


#charger le jeu
game= Game()


#boucle tant que le jeu tourne pour maintenir la fenetre
running = True
while running:
    #pygame.key.set_repeat(5, 5)
    
    
    #appliquer arrière-plan et joueur
    ecran.blit(background,(0,0))
    ecran.blit(game.player.image,(game.player.rect.x,game.player.rect.y))

Sauriez-vous comment régler ce problème ou comment ralentir encore la vélocité du joueur qui est pourtant déjà à 1?

[mise à jour]

Quand je lance mon programme avec l'IDE EduPython mon problème semble être résolu et la vitesse du personnage respecte bien les valeurs entrées. Mais quand je retourne sur Pycharm ou sur VisualStudioCode la vitesse du personnage redevient beaucoup plus élevée. Y a t-il un moyen de régler le problème ou dois-je coder nécessairement sur Edupython?

Merci de votre aide.

-
Edité par RaphaelBerger1 11 avril 2021 à 17:41:14

  • Partager sur Facebook
  • Partager sur Twitter
9 avril 2021 à 19:24:41

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Merci de colorer votre code à l'aide du bouton Code

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: python;">Votre code ici</pre>.

Merci de modifier votre message d'origine en fonction.

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter
9 avril 2021 à 20:22:42

Plusieurs méthodes ... Je pense que le plus simple pour un débutant c'est de détecter l'événement KEYDOWN, couplé à un key.set_repeat

-
Edité par josmiley 9 avril 2021 à 20:23:26

  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

9 avril 2021 à 21:03:35

josmiley a écrit:

Plusieurs méthodes ... Je pense que le plus simple pour un débutant c'est de détecter l'événement KEYDOWN, couplé à un key.set_repeat

-
Edité par josmiley il y a 38 minutes


Merci mais malheureusement même en utilisant votre conseil, mon problème persiste et je n'arrive toujours pas à ralentir la vitesse de mon personnage...
  • Partager sur Facebook
  • Partager sur Twitter
9 avril 2021 à 21:13:24

RaphaelBerger1 a écrit:

josmiley a écrit:

Plusieurs méthodes ... Je pense que le plus simple pour un débutant c'est de détecter l'événement KEYDOWN, couplé à un key.set_repeat

-
Edité par josmiley il y a 38 minutes


Merci mais malheureusement même en utilisant votre conseil, mon problème persiste et je n'arrive toujours pas à ralentir la vitesse de mon personnage...


Montrez de quelle manière vous avez utilisé mes conseils.

  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

10 avril 2021 à 12:11:16

josmiley a écrit:

RaphaelBerger1 a écrit:

josmiley a écrit:

Plusieurs méthodes ... Je pense que le plus simple pour un débutant c'est de détecter l'événement KEYDOWN, couplé à un key.set_repeat

-
Edité par josmiley il y a 38 minutes


Merci mais malheureusement même en utilisant votre conseil, mon problème persiste et je n'arrive toujours pas à ralentir la vitesse de mon personnage...


Montrez de quelle manière vous avez utilisé mes conseils

Malheureusement, je n'ai pas sauvegardé mon test. Néanmoins j'ai testé mon programme à l'identique sur edupython et le problème semble s'être interrompu et les valeurs de vitesse correspondent bien au visuel. Mais lorsque je retourne sur visual Studio Code ou sur Pycharm, mon problème revient, je n'arrive pas à bien saisir comment régler le problème.



-
Edité par RaphaelBerger1 10 avril 2021 à 12:21:48

  • Partager sur Facebook
  • Partager sur Twitter
31 janvier 2025 à 14:00:12 - Message modéré pour le motif suivant : Merci d’utiliser le bouton code pour insérer un code sur le forum


31 janvier 2025 à 14:39:04

@Colline_   Bonjour, c'est bien de répondre aux questions posées sur le forum, le faire dans les règles de celui-ci c'est mieux. Merci d'utiliser le bouton code </> de la barre d'outil pour insérer un code dans vos messages comme indiqué plus haut dans mon message de modération. Ceci dit :

Ce sujet date de 2021 et est bien noté comme résolu. Donc merci de ne pas déterrer d'ancien sujet résolu et de vous concentrer sur les sujets plus récent.

Je ferme ce déterrage.

Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter