【问题标题】:Python pygame converting drawing to an imagePython pygame 将绘图转换为图像
【发布时间】:2020-05-08 11:41:28
【问题描述】:

我正在尝试制作一个使用网格的游戏。但我必须每帧计算那个网格。我可以保存网格吗?所以我只需要在屏幕上对网格进行 blit 处理?

这是我的代码:

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

【问题讨论】:

    标签: python pygame


    【解决方案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)
    

    并在主应用程序循环中对表面进行 blit,而不是绘制网格和背景:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-29
      • 2016-12-04
      • 1970-01-01
      • 2010-12-27
      • 2012-12-20
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多