我将如何跟踪用户在棋盘上的点击次数?

How would I keep track of the users clicks on the chessboard?

我正在使用 Python 3.7.4。我正在使用 Pycharm 2020 社区作为我的 IDE。我正在使用 Pygame 1.9.6 作为我的游戏解释器。

我想知道如何跟踪棋手在棋盘上的点击次数。我认为它应该在我的 main() 运行 操作中,但它在哪里? 所以在棋盘上它是一个 8x8 的棋盘,所以有 64 个方格。就像说他们点击一次正方形到 select 上面有一个棋子的正方形,然后如果正方形是空的,则单击另一个正方形将所述棋子移动到另一个正方形。我棋盘上的一个空方块是:“01”。就像我需要某种方式来获得电路板的尺寸,比如一行或一列? 我有电路板的尺寸。

WIDTH = HEIGHT = 512  # 400 is another option
DIMENSION = 8  # dimensions of a chess board are 8x8
SQ_SIZE = HEIGHT // DIMENSION
MAX_FPS = 15  # for animations later on
IMAGES = {}

def main():
    p.init()
    screen = p.display.set_mode((WIDTH, HEIGHT))
    clock = p.time.Clock()
    screen.fill(p.Color("white"))
    gs = ChessEngine.GameState()
    loadImages()  # only do this once, before the while loop
    running = True
    while running:
        for e in p.event.get():
            if e.type == p.QUIT:
                running = False

        drawGameState(screen, gs)
        clock.tick(MAX_FPS)
        p.display.flip()

我以前从未做过鼠标点击,所以我想知道我该怎么做?

可以获取鼠标坐标除以SQ_SIZE,但是使用floor-division(mousex//SQ_Size),使用两个除号终止小数点,你将留下董事会的索引。例如,如果您单击 (230, 213),您可以...

if pygame.mouse.get_pressed()[0]: # Is the left mouse button down
    mousex, mousey = pygame.mouse.get_pos() # (230, 213)
    col = mousex // SQ_SIZE # 230 // 64 = 3
    row = mousey // SQ_SIZE # 213 // 64 = 3
    pieceSelected = chessBoard[row][col]

这样您就可以获取用户点击的片段。

点击字段的索引可以通过//(floor division)运算符计算。获取MOUSEBUTTONDOWN事件(见pygame.event)鼠标位置坐标除以SQ_SIZE:

def main():
    # [...]

    while running:
        for e in p.event.get():
            if e.type == p.QUIT:
                running = False

            if e.type == p.MOUSEBUTTONDOWN:
                mousePos = e.pos
                column, row = mousePos[0] // SQ_SIZE, mousePos[1] // SQ_SIZE
                columnName, rowName  = chr(ord('a') + column), str(row+1)
                print("clicked at " + columnName + rowName)