Pygame TypeError surface
worox
Messages postés
24
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
- Surface pro ecran noir - Forum Windows 8 / 8.1
- Clavier surface pro - Guide
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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