Pygame TypeError surface

Résolu


Bonjour, je suis en python et je ne comprend pas pour quoi mon self.screen ne marche pas ?
L'image que vous voyez en dessous représente l'érreur, et les pages de code en dessous, tous mon code.
Le problème agis lorsque je lance le programme.



import pygame

from game import Game

if __name__ == '__main__':
pygame.init()
game = Game()
game.run()

import pygame
import pytmx
import pyscroll

from lumbertown.player import Player

class Game:

def __init__(self):
# frst fenêtre
self.screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("LumberTown")

# charger la carte
tmx_data = pytmx.util_pygame.load_pygame('lumbertown/map/carte.tmx')
map_data = pyscroll.data.TiledMapData(tmx_data)
map_layer = pyscroll.orthographic.BufferedRenderer(map_data, self.screen.get_size())
map_layer.zoom = 2

# genérer le joueur
player_position = tmx_data.get_object_by_name('player')
self.player = Player(player_position.x, player_position.y)

# dessiner le groupe de camque.
self.group = pyscroll.PyscrollGroup(map_layer=map_layer, default_layer=3)
self.group.add(self.player)

def handle_input(self):
pressed = pygame.key.get_pressed()

if pressed[pygame.K_UP]:
self.player.move_up()
self.player.change_animation('up')
elif pressed[pygame.K_DOWN]:
self.player.move_down()
self.player.change_animation('down')
elif pressed[pygame.K_RIGHT]:
self.player.move_rig()
self.player.change_animation('right')
elif pressed[pygame.K_LEFT]:
self.player.move_left()
self.player.change_animation('left')

def run(self):

clock = pygame.time.Clock()

# var light game
running = True

# boucle tant que la condition = True
while running:

self.handle_input()
self.group.update()
self.group.center(self.player.rect.center)
self.group.draw(self.screen)
pygame.display.flip()

# fenetre fermé
for event in pygame.event.get():
# if fermeture
if event.type == pygame.QUIT:
running = False
pygame.quit()
print("fermé")

clock.tick(60)

import pygame

class Player(pygame.sprite.Sprite):

def __init__(self, x, y):
super().__init__()
self.sprite_sheet = pygame.image.load('lumbertown/map/player.png')
self.image = self.get_image(0, 0)
self.image.set_colorkey([0, 0, 0])
self.rect = self.image.get_rect()
self.position = [x, y]
self.image = {
'down' : self.get_image(0, 0),
'left' : self.get_image(0, 32),
'right' : self.get_image(0, 64),
'up' : self.get_image(0, 96)
}
self.speed = 5

def change_animation(self, name):
self.image = self.images
self.image.set_colorkey(0, 0, 0)

def move_rig(self): self.position[0] += self.speed

def move_left(self): self.position[0] -= self.speed

def move_down(self): self.position[1] += self.speed

def move_up(self): self.position[1] -= self.speed

def update(self):
self.rect.topleft = self.position

def get_image(self, x, y):
image = pygame.Surface([32, 32])
image.blit(self.sprite_sheet, (0, 0), (x, y, 32, 32))
return image


Configuration: Windows / Chrome 101.0.4951.67

2 réponses

  1. Contributeur
    bonjour,
    merci de partager du texte, pas des images.
    quand tu partages du code:
    - précise le nom de chaque module
    - spécifie le langage dans les balises de code (https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code)
    0
    1. salut, l'image que tu vois représente le problème, et pour les page de code,
      la première c'est main.py, la 2eme game.py et la 3eme, player.py
      et j'avais spécifié le langage mais je vois que ca n'a pas marché. C'est du Python
      1
    2. Contributeur
      @woroxpas facile de faire du copier/coller à partir de l'image du message d'erreur.
      d'où vient lumbertown.player?
      et le fichier lumbertown/map/carte.tmx?
      0