Python 为什么我的扫雷舰没有点击右键?
我的代码有点问题。我想做一个扫雷游戏。正如你们所知,扫雷舰在顶部有一个重置按钮和一个计时器,所以我让我的列表从顶部开始50,以便能够将它们添加到行中,然而,这也意味着当我点击一个正方形时,向下几行的正方形会被点击 我怎样才能避免这种情况?有没有一种方法可以使鼠标的点击位置降低而不降低?或者我需要更改哪些值才能适应它 多谢各位Python 为什么我的扫雷舰没有点击右键?,python,minesweeper,Python,Minesweeper,我的代码有点问题。我想做一个扫雷游戏。正如你们所知,扫雷舰在顶部有一个重置按钮和一个计时器,所以我让我的列表从顶部开始50,以便能够将它们添加到行中,然而,这也意味着当我点击一个正方形时,向下几行的正方形会被点击 我怎样才能避免这种情况?有没有一种方法可以使鼠标的点击位置降低而不降低?或者我需要更改哪些值才能适应它 多谢各位 import pygame BLACK = (0, 0, 0) WHITE = (255, 255, 255) GREEN = (0, 255, 0) RED = (25
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]//(宽度+边距)。请提供预期的宽度。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。