Python pygame将绘图转换为图像

时间:2020-05-08 11:41:28

标签: python pygame

我正在尝试制作一个使用网格的游戏。但是我必须每帧计算该网格。我可以保存网格吗?所以我只需要在屏幕上抹平网格?

这是我的代码:

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()

1 个答案:

答案 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()
相关问题