Python 为什么我的扫雷舰没有点击右键?

Python 为什么我的扫雷舰没有点击右键?,python,minesweeper,Python,Minesweeper,我的代码有点问题。我想做一个扫雷游戏。正如你们所知,扫雷舰在顶部有一个重置按钮和一个计时器,所以我让我的列表从顶部开始50,以便能够将它们添加到行中,然而,这也意味着当我点击一个正方形时,向下几行的正方形会被点击 我怎样才能避免这种情况?有没有一种方法可以使鼠标的点击位置降低而不降低?或者我需要更改哪些值才能适应它 多谢各位 import pygame BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) RED = (25

我的代码有点问题。我想做一个扫雷游戏。正如你们所知,扫雷舰在顶部有一个重置按钮和一个计时器,所以我让我的列表从顶部开始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)
还要将窗口大小增加50以查看整个网格

WINDOW_SIZE = [255, 315]

您可能希望使用column=(pos[0]-MARGIN)//宽度,而不是column=pos[0]//(宽度+边距)。请提供预期的宽度。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。