将图像放在 pygame 网格上
placing images on a pygame grid
红色和蓝色的边将各自用一个图像替换它们的图块(不是一个图像将它们全部重叠,而是将一个图像粘贴到每个图块上)。我不太确定该怎么做,如有任何帮助,我们将不胜感激!
import pygame
TILESIZE = 22
margin = 1
BOARD_POS = (10, 10)
def create_board_surf():
board_surf = pygame.Surface((TILESIZE * 50 + margin * 51, TILESIZE * 26 + margin * 27))
board_surf.set_colorkey((0, 0, 0))
board_surf.set_alpha(210)
for row in range(26):
for column in range(0, 25):
color = (170, 70, 70)
rect = pygame.draw.rect(screen, color, [(margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin, TILESIZE, TILESIZE])
pygame.draw.rect(board_surf, pygame.Color(color), rect)
for column in range(25, 50):
color = (70, 95, 195)
rect = pygame.draw.rect(screen, color, [(margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin, TILESIZE, TILESIZE])
pygame.draw.rect(board_surf, pygame.Color(color), rect)
return board_surf
def create_board():
board = []
for row in range(26):
board.append([])
for column in range(50):
board[row].append(None)
return board
def main():
global screen
pygame.init()
screen = pygame.display.set_mode((1200, 650))
clock = pygame.time.Clock()
while True:
events = pygame.event.get()
for e in events:
if e.type == pygame.QUIT:
return
create_board()
board_surf = create_board_surf()
screen.fill(pygame.Color((200, 200, 200)))
screen.blit(board_surf, BOARD_POS)
pygame.display.flip()
clock.tick(60)
main()
在为每个图块绘制矩形的 def create_board_surf():
下,将 pygame.draw.rect
替换为 board_surf.blit(IMAGE_SURFACE, ((margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin))
以将图像放置在图块矩形所在的位置。
您可以通过 img = pygame.image.load("IMAGENAME.png")
制作 IMAGE_SURFACE
这些图像必须缩放到图块大小,以便它们适合:
img = pygame.transform.scale(img, (TILESIZE, TILESIZE))
如果一些图块应该有不同的图像,您可以使用列和行的位置来确定要使用的图像,同样的方式一些图块是红色的,而另一些是蓝色的基于它们的列。
红色和蓝色的边将各自用一个图像替换它们的图块(不是一个图像将它们全部重叠,而是将一个图像粘贴到每个图块上)。我不太确定该怎么做,如有任何帮助,我们将不胜感激!
import pygame
TILESIZE = 22
margin = 1
BOARD_POS = (10, 10)
def create_board_surf():
board_surf = pygame.Surface((TILESIZE * 50 + margin * 51, TILESIZE * 26 + margin * 27))
board_surf.set_colorkey((0, 0, 0))
board_surf.set_alpha(210)
for row in range(26):
for column in range(0, 25):
color = (170, 70, 70)
rect = pygame.draw.rect(screen, color, [(margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin, TILESIZE, TILESIZE])
pygame.draw.rect(board_surf, pygame.Color(color), rect)
for column in range(25, 50):
color = (70, 95, 195)
rect = pygame.draw.rect(screen, color, [(margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin, TILESIZE, TILESIZE])
pygame.draw.rect(board_surf, pygame.Color(color), rect)
return board_surf
def create_board():
board = []
for row in range(26):
board.append([])
for column in range(50):
board[row].append(None)
return board
def main():
global screen
pygame.init()
screen = pygame.display.set_mode((1200, 650))
clock = pygame.time.Clock()
while True:
events = pygame.event.get()
for e in events:
if e.type == pygame.QUIT:
return
create_board()
board_surf = create_board_surf()
screen.fill(pygame.Color((200, 200, 200)))
screen.blit(board_surf, BOARD_POS)
pygame.display.flip()
clock.tick(60)
main()
在为每个图块绘制矩形的 def create_board_surf():
下,将 pygame.draw.rect
替换为 board_surf.blit(IMAGE_SURFACE, ((margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin))
以将图像放置在图块矩形所在的位置。
您可以通过 img = pygame.image.load("IMAGENAME.png")
制作 IMAGE_SURFACE
这些图像必须缩放到图块大小,以便它们适合:
img = pygame.transform.scale(img, (TILESIZE, TILESIZE))
如果一些图块应该有不同的图像,您可以使用列和行的位置来确定要使用的图像,同样的方式一些图块是红色的,而另一些是蓝色的基于它们的列。