如何解决我在 pygame 中制作跳棋,我想要一块移动的方式是点击 2 次鼠标,但我不知道该怎么做
现在我有一个拖动机制,下面的代码有人知道我如何制作它,所以第一次点击选择一块,第二次点击移动一块。通过简单地将另一个 mousebuttondown 放入第一个 mousebuttondown 中,什么也不会发生。
while not game_over:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.MOUSEBUTTONDOWN:
start_x = event.pos[0]
start_y = event.pos[1]
if event.type == pygame.MOUSEBUTTONUP:
end_x = event.pos[0]
end_y = event.pos[1]
board.valid_moves(start_x,start_y)
board.get_mouse_pos_and_place(start_x,start_y,end_x,end_y)
解决方法
使用第一次点击鼠标时设置的变量。当第二次点击鼠标时进行移动。
使用 start_x
初始化 start_y
和 None
。单击鼠标时设置变量。再次单击鼠标时使用变量:
start_x = None
start_y = None
while not game_over:
# [...]
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.MOUSEBUTTONDOWN:
if start_x == None and start_y == None:
# select piece
start_x,start_y = event.pos
else:
# do movement
end_x,end_y = event.pos
board.valid_moves(start_x,start_y)
board.get_mouse_pos_and_place(start_x,start_y,end_x,end_y)
# prepare for next move
start_x = None
start_y = None
您可以通过检查第一次点击是否在一块上来改进算法:
if event.type == pygame.MOUSEBUTTONDOWN:
if start_x == None and start_y == None:
# select piece
click_x,click_y = event.pos
is_on_piece = # [...] check if click_x,click_y is on a piece
if is_on_piece:
start_x = click_x
start_y = click_y
else:
# [...]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。