Problème avec PyGames

ShadowStrike - Modifié le 4 avril 2024 à 11:43
 huitou - 30 mars 2024 à 17:01

Bonjour,

j'essaye de débuter avec pygames et j'ai codé un algorithme qui permets de contrôler un sprite en forme de voiture et qui change de frame en fonction des flèches cliquées seulement quand je lance le code  la voiture n'apparait pas dans la fenêtre . J'ai tout essayé mais rien n'y fait , est ce que quelqu'un pourrait m'éclairer ? Merci d'avance .

Voici mon code :

import pygame
import sys

# Initialisation de pygame
pygame.init()

# Définir la taille de la fenêtre
width = 800
height = 600
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Asphalt X")

# Charger les différentes images de la voiture pour l'animation
try:
    car_up_image = pygame.image.load('car_up.png').convert_alpha()
    car_down_image = pygame.image.load('car_down.png').convert_alpha()
    car_left_image = pygame.image.load('car_left.png').convert_alpha()
    car_right_image = pygame.image.load('car_right.png').convert_alpha()
except pygame.error:
    print("Error: Unable to load the car images.")
    sys.exit()

# Redimensionner les images de la voiture
width_car, height_car = car_up_image.get_rect().size
car_up_image = pygame.transform.scale(car_up_image, (width_car * 5, height_car * 5))
car_down_image = pygame.transform.scale(car_down_image, (width_car * 5, height_car * 5))
car_left_image = pygame.transform.scale(car_left_image, (width_car * 5, height_car * 5))
car_right_image = pygame.transform.scale(car_right_image, (width_car * 5, height_car * 5))

x = 100
y = 100
speed = 10

clock = pygame.time.Clock()  # Déclaration de l'objet Clock

# Afficher l'image de la voiture au début du jeu
window.blit(car_up_image, (x, y))
pygame.display.flip()  # Forcer l'affichage

def handle_input():
    # Récupérer les touches enfoncées
    keys = pygame.key.get_pressed()

    # Gérer les événements
    if keys[pygame.K_UP]:
        move_up()
    elif keys[pygame.K_DOWN]:
        move_down()
    elif keys[pygame.K_LEFT]:
        move_left()
    elif keys[pygame.K_RIGHT]:
        move_right()

def move_right():
    global x
    x += speed
    window.blit(car_right_image, (x, y))

def move_left():
    global x
    x -= speed
    window.blit(car_left_image, (x, y))

def move_up():
    global y
    y -= speed
    window.blit(car_up_image, (x, y))

def move_down():
    global y
    y += speed
    window.blit(car_down_image, (x, y))

# Boucle principale du jeu
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    handle_input()

    window.fill((0, 0, 0))

    clock.tick(60)  # Contrôle du framerate
    
    pygame.display.flip()


Windows / Firefox 124.0

1 réponse

Salut.

Cela est bien affiché, mais tu remplis l'écran juste à la suite.

Place l'appel à ta fonction handle_input() après ton window.fill((0, 0, 0))

Nb: sur ccm, il y a une fonction pour insérer du code, le bouton tout à droite au-dessus de la zone du message ;)

0