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