Pygame TypeError surface

Résolu
worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -



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
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   9
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
pas 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
worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   9 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

Ok, mais il vaut mieux copier le code ici, au lieu d'une image
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ça:

for k in range(10):
    print(k)
0