Pygame TypeError surface

Résolu/Fermé
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 - Modifié le 20 mai 2022 à 22:03
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 - 21 mai 2022 à 21:13



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 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
20 mai 2022 à 22:39
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 mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9
21 mai 2022 à 12:51
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 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022
21 mai 2022 à 14:56
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 mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9 > yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024
21 mai 2022 à 21:13
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
21 mai 2022 à 13:31
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