Pygame开发国际象棋:棋子点击检测异常(整列触发选中)
Pygame国际象棋点击检测问题解决
问题原因
你用的元组范围判断(0,0) <= pos <= (50,50)逻辑不符合预期。Python的元组比较是按元素顺序逐个判定:只要鼠标x坐标在0-50之间,不管y坐标是多少,整个条件都会返回True——这就是点击整列都会触发主教选中判定的原因。
修复代码
把元组比较改成分别判断x、y坐标的范围:
def detectClick(): pos = pygame.mouse.get_pos() x, y = pos if 0 <= x <= 50 and 0 <= y <= 50: print('bb')
通用优化建议
针对棋盘棋子的点击检测,建议根据格子尺寸计算每个棋子的区域:假设每个格子边长为CELL_SIZE,某个棋子在第row行、第col列,那么它的点击区域应为:
- x范围:
col * CELL_SIZE到(col + 1) * CELL_SIZE - y范围:
row * CELL_SIZE到(row + 1) * CELL_SIZE
通过这种方式可以精准定位每一个棋子的点击区域,避免误判。
内容的提问来源于stack exchange,提问作者FritzPappo
相关产品推荐
相关产品推荐

