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.
Voici mes lignes de code
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)
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
Bonjour, Merci d'indiquer un titre en rapport avec votre problématique.
Mauvais titre
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Pour modifier votre titre, éditez le premier message de votre sujet.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.