Bonjour je suit le cours de Graven , Créer un jeu en python (3/10) et la je calle sur un message d'erreur quand j'appuie sur la touche espace.
voici mon code:

main.py
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
import pygame
pygame.init()
from game import Game
 
 
#genere la fenetre du jeu
pygame.display.set_caption("premier jeu de alain")
screen = pygame.display.set_mode((1080, 720))
 
background = pygame.image.load("assets/bg.jpg")
 
game = Game()
 
 
running = True
 
 
 
#boucle d'execution
while running:
 
    screen.blit(background, (0, -300))
 
    screen.blit(game.player.image, game.player.rect)
    # appliquer l'ensemble des images de mon groupe de projectiles
    game.player.all_projectiles.draw(screen)
    # verifier si le joueur  souhaite aller a gauche ou a droite
    if game.pressed.get(pygame.K_RIGHT) and game.player.rect.x + game.player.rect.width < 1080:
        game.player.move_right()
    elif game.pressed.get(pygame.K_LEFT) and game.player.rect.x > 0:
        game.player.move_left()
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()
 
        #detecter si un joueur lache une touche du clavier
        elif event.type == pygame.KEYDOWN:
            #quel touche a ete
            game.pressed[event.key] = True
            #detecter si la touche espace est enclenché
            if event.key == pygame.K_SPACE:
                game.player.launch_projectile()
        elif event.type == pygame.KEYUP:
            game.pressed[event.key] = False
game.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
import pygame
from player import Player
 
class Game:
 
    def __init__(self):
        self.player = Player()
        self.pressed = {
 
        }
player.py
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
import pygame
from projectile import Projectile
 
 
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.vie = 100
        self.max_vie = 100
        self.attaque = 10
        self.velocite = 2
        self.all_projectiles = pygame.sprite.Group()
        self.image = pygame.image.load('assets/player.png')
        self.rect = self.image.get_rect()
        self.rect.x = 400
        self.rect.y = 400
    def launch_projectile(self):
 
        self.all_projectiles.add(Projectile())
 
    def move_right(self):
        self.rect.x += self.velocite
 
    def move_left(self):
        self.rect.x -= self.velocite
projectile.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
import pygame
 
#on vas definir la class projectile
class Projectile(pygame.sprite.Sprite):
    def __init__(self, player):
        super().__init__()
        self.velocite = 5
        self.image = pygame.image.load('assets/projectile.png')
        self.image = pygame.transform.scale(self.image(50.50))
        self.rect = self.image.get_rect()
        self.rect.x = player.rect.x
        self.rect.y = player.rect.y