отображение спрайтов в pygame
Делаю игру, на подобие цивилизации. Решил, добавить спрайты вместо одноцветных клеток. Но вместо спрайта отображается, только синий цвет. Порядок отображения вроде правильный
import pygame as pg
import os
import sys
pg.init()
top, left, cell_size = 0, 0, 50
screen = pg.display.set_mode()
def load_image(name, colorkey=None):
fullname = os.path.join('data', name)
if not os.path.isfile(fullname):
print(f"Файл с изображением '{fullname}' не найден")
sys.exit()
image = pg.image.load(fullname)
if colorkey is not None:
image = image.convert()
if colorkey == -1:
colorkey = image.get_at((0, 0))
image.set_colorkey(colorkey)
else:
image = image.convert_alpha()
return image
tile_images = {"farm":
load_image("test.png")}
all_sprites = pg.sprite.Group()
tiles_group = pg.sprite.Group()
class Tile(pg.sprite.Sprite):
def __init__(self, tile_type, pos_x, pos_y):
super().__init__(tiles_group, all_sprites)
self.image = tile_images.get(tile_type)
self.rect = self.image.get_rect().move(
cell_size * pos_x + left, cell_size * pos_y + top)
def render(height, width, border):
global top, left, cell_size
if cell_size < 19:
cell_size = 19
if top > 50:
top = 50
if left > 50:
left = 50
# if self.top < -940:
#self.top = -940
grid = []
for y in range(height):
for x in range(width):
grid.append(pg.Rect(x * cell_size + left, y * cell_size + top, cell_size,
cell_size))
grid = iter(grid)
for y in range(len(board)):
for x in range(len(board[y])):
rect = next(grid)
if board[y][x] == 0:
Tile("farm", x, y)
else:
pg.draw.rect(screen, colors.get(board[y][x]), rect)
pg.draw.rect(screen, (0, 0, 0), rect, 1)
for i in border:
pg.draw.rect(screen, (255, 0, 0), (
left + i[0] * cell_size, top + cell_size * i[1], cell_size, cell_size), 2)
pg.draw.rect(screen, (131, 79, 42), (0, 970, 2000, 110))