我正在尝试制作一个使用网格的游戏。但是我必须每帧计算该网格。我可以保存网格吗?所以我只需要在屏幕上抹平网格?
这是我的代码:
import pygame
pygame.init()
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('grid')
running = True
def drawgrid():
for x in range(0, width, 40):
pygame.draw.rect(screen, (0, 0, 0), (x, 0, 2, height))
for y in range(0, height, 40):
pygame.draw.rect(screen, (0, 0, 0), (0, y, width, 2))
while running:
screen.fill((255,255,120))
drawgrid()
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running == False
pygame.quit()
答案 0 :(得分:1)
创建一个与显示大小和背景颜色相同的表面:
grid_surf = pygame.Surface((width, height))
grid_surf.fill((255,255,120))
在此表面绘制网格:
def drawgrid(surf):
for x in range(0, width, 40):
pygame.draw.rect(surf, (0, 0, 0), (x, 0, 2, height))
for y in range(0, height, 40):
pygame.draw.rect(surf, (0, 0, 0), (0, y, width, 2))
drawgrid(grid_surf)
然后在主应用程序循环中涂抹表面,而不是绘制网格和背景:
screen.blit(grid_surf, (0, 0))
示例代码:
import pygame
pygame.init()
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('grid')
def drawgrid(surf):
for x in range(0, width, 40):
pygame.draw.rect(surf, (0, 0, 0), (x, 0, 2, height))
for y in range(0, height, 40):
pygame.draw.rect(surf, (0, 0, 0), (0, y, width, 2))
grid_surf = pygame.Surface((width, height))
grid_surf.fill((255,255,120))
drawgrid(grid_surf)
running = True
while running:
screen.blit(grid_surf, (0, 0))
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running == False
pygame.quit()