Pygame TypeError surface

worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur 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.


main.py
import pygame

from game import Game

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



game.py
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)



player.pi
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




voici les erreurs qui son print :

Traceback (most recent call last):
File "C:\Users\VERITE\OneDrive\Desktop\Louis Verite\godot\autre\main.py", line 8, in <module>
game.run()
File "C:\Users\VERITE\OneDrive\Desktop\Louis Verite\godot\autre\game.py", line 58, in run
self.group.draw(self.screen)
File "C:\Python310\lib\site-packages\pyscroll\group.py", line 79, in draw
return self._map_layer.draw(surface, draw_area, new_surfaces)
File "C:\Python310\lib\site-packages\pyscroll\orthographic.py", line 246, in draw
self._render_map(
File "C:\Python310\lib\site-packages\pyscroll\orthographic.py", line 427, in _render_map
self._draw_surfaces(surface, surfaces_offset, surfaces)
File "C:\Python310\lib\site-packages\pyscroll\orthographic.py", line 528, in _draw_surfaces
surface.blits(draw_list2, doreturn=False)
TypeError: Source objects must be a surface


Configuration: Windows / Chrome 101.0.4951.67
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
d'où vient lumbertown.player?
et le fichier lumbertown/map/carte.tmx?
1
worox Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   9
 
quand tu dis d'ou il vient je ne comprend pas totalement ce que tu veux dire ? Il vienne de mon pc. Je comprend pas vraiment le sens de la question. Désolé
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  
 
peux-tu partager ce code et ce fichier?
1
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  
 
voila ce que tu m'as demandé mais via un site de téléchargement car je ne peux pas envoyé de fichiers autres que des images https://fromsmash.com/les-fichiers-en-question
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  
 
cela se clarifie. ne manque-t-il pas un fichier home.tsx?
2
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  
 
Je ne pense pas avoir créé un fichier home.tsx
Pourquoi tu penses qu'il manque un fichier à quelle ligne
2