Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何跟踪用户在棋盘上的点击?_Python_Pygame_Pycharm_Python 3.7 - Fatal编程技术网

Python 我如何跟踪用户在棋盘上的点击?

Python 我如何跟踪用户在棋盘上的点击?,python,pygame,pycharm,python-3.7,Python,Pygame,Pycharm,Python 3.7,我正在使用Python 3.7.4。我正在使用Pycharm 2020社区作为我的IDE。我使用PyGame1.9.6作为我的游戏解释器 我想知道我怎样才能跟踪棋盘上的棋手。我想它应该出现在我的main()运行操作中,但它在哪里呢? 所以在棋盘上是一个8x8的棋盘,有64个方块。比如说,他们点击一次正方形,选择上面有一块的正方形,然后点击另一个正方形,如果正方形是空的,则将该块移动到另一个正方形。我棋盘上的一个空方块是:“01”。比如说,我需要某种方法来获得董事会的尺寸,比如说,一行或一列? 我

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

我想知道我怎样才能跟踪棋盘上的棋手。我想它应该出现在我的main()运行操作中,但它在哪里呢? 所以在棋盘上是一个8x8的棋盘,有64个方块。比如说,他们点击一次正方形,选择上面有一块的正方形,然后点击另一个正方形,如果正方形是空的,则将该块移动到另一个正方形。我棋盘上的一个空方块是:“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\u SIZE
,但是使用地板分割法(mousex//SQ\u SIZE),使用两个分割符号终止小数点,你将得到电路板的索引。例如,如果你点击(230213),你可能会

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]

这将允许您获取用户单击的工件。

单击字段的索引可由
/
(楼层划分)操作符计算。获取
MOUSEBUTTONDOWN
事件(请参阅),并将鼠标位置坐标除以
SQ_SIZE

def main():
# [...]
运行时:
对于p.event.get()中的e:
如果e.type==p.QUIT:
运行=错误
如果e.type==p.MOUSEBUTTONDOWN:
鼠标点=e.pos
列,行=mousePos[0]//SQ\u大小,mousePos[1]//SQ\u大小
columnName,rowName=chr(ord('a')+列),str(row+1)
打印(“单击“+列名称+行名称”)

我应该把参考鼠标按钮放在哪里?@Axhul抱歉,它必须是
p.MOUSEBUTTONDOWN: