如何在pygame中制作网格

Noa*_*art 8 python pygame

我正在尝试用 Python 创建一个基本的蛇游戏,但我不熟悉 Pygame。我创建了一个窗口,我试图根据窗口的大小和设置的正方形大小将该窗口拆分为一个网格。

def get_initial_snake( snake_length, width, height, block_size ):
    window = pygame.display.set_mode((width,height))
    background_colour = (0,0,0)
    window.fill(background_colour)

    return snake_list
Run Code Online (Sandbox Code Playgroud)

我应该在 window.fill 函数中添加什么来创建基于宽度、高度和 block_size 的网格?任何信息都会有帮助。

the*_*rwl 11

使用 for 循环作为参考答案:https : //stackoverflow.com/a/33963521/9715289

这就是我在尝试制作蛇游戏时所做的。

BLACK = (0, 0, 0)
WHITE = (200, 200, 200)
WINDOW_HEIGHT = 400
WINDOW_WIDTH = 400


def main():
    global SCREEN, CLOCK
    pygame.init()
    SCREEN = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
    CLOCK = pygame.time.Clock()
    SCREEN.fill(BLACK)

    while True:
        drawGrid()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        pygame.display.update()


def drawGrid():
    blockSize = 20 #Set the size of the grid block
    for x in range(0, WINDOW_WIDTH, blockSize):
        for y in range(0, WINDOW_HEIGHT, blockSize):
            rect = pygame.Rect(x, y, blockSize, blockSize)
            pygame.draw.rect(SCREEN, WHITE, rect, 1)
Run Code Online (Sandbox Code Playgroud)

结果如何:

结果如何


fur*_*ras 5

你可以画矩形

for y in range(height):
    for x in range(width):
        rect = pygame.Rect(x*block_size, y*block_size, block_size, block_size)
        pygame.draw.rect(window, color, rect)
Run Code Online (Sandbox Code Playgroud)

我假设heightwidth是块数。


如果矩形之间需要一个像素间隙,则使用

rect = pygame.Rect(x*(block_size+1), y*(block_size+1), block_size, block_size)
Run Code Online (Sandbox Code Playgroud)

要绘制蛇,您可以使用 list 和 head_color、tail_color

snake = [(0,0), (0,1), (1,1), (1,2), (1,3)]

# head

x, y = snake[0]
rect = pygame.Rect(x*block_size, y*block_size, block_size, block_size)
pygame.draw.rect(window, head_color, rect)

# tail

for x, y in snake[1:]:
    rect = pygame.Rect(x*block_size, y*block_size, block_size, block_size)
    pygame.draw.rect(window, tail_color, rect)
Run Code Online (Sandbox Code Playgroud)