为什么我的扫雷方块没有点击右键?

Why are my minesweeper sqaures not clicking the right button?

我的代码一直有问题。我正在尝试制作扫雷游戏。如您所知,扫雷器在顶部有一个重置按钮和一个计时器,因此我将列表从顶部开始 50 ,则点击下方几行的方块。

我怎样才能避免这种情况?有没有办法让它开始更低而不鼠标点击也更低?或者我需要更改哪些值才能适应它?

谢谢

import pygame

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0) 
WIDTH = 20
HEIGHT = 20 
MARGIN = 5 
grid = []
for row in range(10):
    grid.append([])
    for column in range(10):
        grid[row].append(0)
print(grid)

pygame.init()
 
WINDOW_SIZE = [255, 265]
screen = pygame.display.set_mode(WINDOW_SIZE)
 
pygame.display.set_caption("Array Backed Grid")
 
done = False
 
clock = pygame.time.Clock()
 
# -------- Main Program Loop -----------
while not done:
    for event in pygame.event.get():  
        if event.type == pygame.QUIT:  
            done = True 
        elif event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            column = pos[0] // (WIDTH + MARGIN)
            row = pos[1] // (HEIGHT + MARGIN)
            grid[row][column] = 1
            print("Click ", pos, "Grid coordinates: ", row, column)
 
    screen.fill(BLACK)
 
    for row in range(10):
        for column in range(10):
            color = WHITE
            if grid[row][column] == 1:
                color = GREEN
            pygame.draw.rect(screen,
                             color,
                             [(MARGIN + WIDTH) * (column) + MARGIN,
                              50+(MARGIN + HEIGHT) * row + MARGIN,
                              WIDTH,
                              HEIGHT])
 

    clock.tick(60)
 

    pygame.display.flip()
 

pygame.quit()

您的网格 Y 从 50 开始,因此在确定行时从鼠标位置减去 50。

row = (pos[1]-50) // (HEIGHT + MARGIN)

同时将 window 大小增加 50 以查看整个网格。

WINDOW_SIZE = [255, 315]