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 -
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
game.py
player.pi
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
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:
- Pygame TypeError surface
- Logiciel gratuit calcul surface m2 - Télécharger - Outils professionnels
- Télécharger surface - Télécharger - Bureautique
- Windows Surface Scanner - Télécharger - Divers Utilitaires
- Calcul surface cercle - Forum C
- Geometry dash pygame ✓ - Forum Python
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?
d'où vient lumbertown.player?
et le fichier lumbertown/map/carte.tmx?
Pourquoi tu penses qu'il manque un fichier à quelle ligne