如何在pygame中制作网格

时间:2015-11-27 18:53:55

标签: 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

我将在window.fill之后添加什么来创建基于width,height和block_size的网格?任何信息都会有所帮助

2 个答案:

答案 0 :(得分:4)

使用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_HEIGHT, WINDOW_WIDTH))
    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(WINDOW_WIDTH):
        for y in range(WINDOW_HEIGHT):
            rect = pygame.Rect(x*blockSize, y*blockSize,
                               blockSize, blockSize)
            pygame.draw.rect(SCREEN, WHITE, rect, 1)

结果如何:

How the result looks like

答案 1 :(得分:0)

您可以绘制矩形

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)

我认为heightwidth是块数。

-

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

rect = pygame.Rect(x*(block_size+1), y*(block_size+1), block_size, block_size)

-

要绘制蛇,您可以使用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)
相关问题