Аргумент не берется из класса?

Я пытаюсь создать класс, чтобы сделать мою программу легче сделать, когда она, надеюсь, станет больше. У меня есть класс Tilemap, который создает спрайт pygame. Я пытаюсь назвать этот спрайт, а затем размазать его. Но когда я это делаю, он утверждает, что это не поверхность, но вместо этого он говорит, что это класс Tilemap. Ошибка:

Traceback (most recent call last):
 File "F:\Desktop Files\Python\Pygame RPG Type Game\RPG TEST 2.py", line 166, in <module>
 main()
 File "F:\Desktop Files\Python\Pygame RPG Type Game\RPG TEST 2.py", line 60, in main
 map_surface.****(tile_surface,(x*TILE_WIDTH,y*TILE_HEIGHT))
TypeError: argument 1 must be pygame.Surface, not Tilemap
</module>

Код, который я использую для всего этого, выглядит следующим образом

Код, который содержит ошибки:

player = Player(locationPlayer)
 grasstile = Tilemap(locationGrass)
 watertile = Tilemap(locationWater)
 waterbeach = Tilemap(locationBeach)

 TILE_WIDTH = 32
 TILE_HEIGHT = 32


 tilemap = [
 [grasstile, grasstile, grasstile, grasstile, waterbeach, watertile, watertile, watertile, watertile],
 [grasstile, grasstile, grasstile, grasstile, waterbeach, watertile, watertile, watertile, watertile],
 [grasstile, grasstile, grasstile, grasstile, waterbeach, watertile, watertile, watertile, watertile],
 [watertile, watertile, watertile, watertile, watertile, watertile, watertile, watertile, watertile]
 ]

 total_level_width = len(tilemap[0]) * 32
 total_level_height = len(tilemap)*32

 camera = Camera(simple_camera ,total_level_width, total_level_height)


 map_surface = pygame.Surface(( len(tilemap[0])*TILE_WIDTH, len(tilemap)*TILE_HEIGHT))

 for y,row in enumerate(tilemap):
 for x,tile_surface in enumerate(row):
 map_surface.****(tile_surface,(x*TILE_WIDTH,y*TILE_HEIGHT))

 map_surface = pygame.transform.scale(map_surface, (1200, 800))

Класс:

class Tilemap(pygame.sprite.Sprite):
 def __init__(self, fileloc):
 pygame.sprite.Sprite.__init__(self)
 self.image = pygame.image.load(fileloc).convert()
 self.image.set_colorkey(WHITE)

 self.rect = self.image.get_rect()

Спасибо за ваше время, отвечая на это, и, пожалуйста, обратите внимание, что я довольно новичок в Pygame, и это код. Еще раз спасибо

1 ответ

<code>map_surface.****(tile_surface,(x*TILE_WIDTH,y*TILE_HEIGHT))</code>

pygame.Surface.**** берет pygame.Surface как первый аргумент, в то время как вы tile_surface, который является экземпляром Tilemap.

licensed under cc by-sa 3.0 with attribution.