Pygame TypeError surface

Fermé
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 - 22 mai 2022 à 12:57
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 25 mai 2022 à 09:56
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

1 réponse

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
22 mai 2022 à 15:48
bonjour,
d'où vient lumbertown.player?
et le fichier lumbertown/map/carte.tmx?
1
worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022 9
22 mai 2022 à 18:37
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022
22 mai 2022 à 19:56
peux-tu partager ce code et ce fichier?
1
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
22 mai 2022 à 20:25
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > worox Messages postés 23 Date d'inscription mercredi 13 avril 2022 Statut Membre Dernière intervention 1 septembre 2022
22 mai 2022 à 21:25
cela se clarifie. ne manque-t-il pas un fichier home.tsx?
2
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
23 mai 2022 à 14:07
Je ne pense pas avoir créé un fichier home.tsx
Pourquoi tu penses qu'il manque un fichier à quelle ligne
2