对于扫雷我使用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和数学。
截至目前,代码现在只是打开你点击的图块,但我想知道如何获得另一行代码来打开网格中的每个图块
答案 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):
就足够了。