Python pygame конвертирует рисунок в изображение - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь создать игру, в которой используется сетка. Но я должен рассчитывать эту сетку каждый кадр. Можно сетку сохранить? Значит, мне просто нужно свернуть сетку на экране?

Вот мой код:

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 Ответ

1 голос
/ 08 мая 2020

Создайте поверхность того же размера, что и дисплей, и цвета фона:

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)

И скопируйте поверхность в основном приложении l oop вместо рисования сетки и фона:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...