使用网格[python]

时间:2016-10-13 08:22:59

标签: python python-3.x pygame

对于扫雷我使用python和pygame创建了一个板。 如果你点击炸弹,你应该看到整个板子。我有单独的功能,包含(随机)炸弹位置,并在炸弹周围(在适当的坐标上)创建数字。如何确保检查坐标0到GRID_TILES(最大范围)。

这就是我点击'点击的方式。坐标

def handle_mouse(mousepos):
    x, y = mousepos
    x, y = math.ceil(x / 40), math.ceil(y / 40)
    check = x, y
    if check in FLAGS:
        print("You have to unflag this tile before clicking!")
    else:
        CLICKED.append(check)
        draw_item(CELLS[x -1][y - 1], x - 1, y - 1, check)
    bomb_check(check)

def draw_item(item, x, y, check):
    global BLOCK_SIZE, screen
    background = pygame.image.load("img/white.png")
    if check in BOMBS:
        image = pygame.image.load("img/9.png")
    else:
        image = pygame.image.load("img/"+str(item)+".png")
    x, y = x * BLOCK_SIZE, y * BLOCK_SIZE
    screen.blit(background, (x, y))
    screen.blit(image, (x + 10, y + 10))
    pygame.display.flip()

使用:

def game_mainloop():
    While True:
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            handle_mouse(pygame.mouse.get_pos())
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 3:
            handle_flag(pygame.mouse.get_pos())

以下定义是:

CELLS =与瓷砖相关的炸弹数量列表

FLAGS =已标记位置的列表

CLICKED =点击位置列表

如果点击的坐标是炸弹,

bomb_check =处理

我已导入pygame和数学。

截至目前,代码现在只是打开你点击的图块,但我想知道如何获得另一行代码来打开网格中的每个图块

1 个答案:

答案 0 :(得分:1)

我得到了解决方案:

def show_board():
for x in range(0,GRID_TILES):
    for y in range(0, GRID_TILES):
        draw_item(CELLS[x][y], x, y, (x+1,y+1))

如果我在击中炸弹后打电话给它,它将显示整个电路板。 如果我只想使用网格上的每个坐标,只需

def show_board():
for x in range(0,GRID_TILES):
    for y in range(0, GRID_TILES):

就足够了。