Pygame:国际象棋中的快照到网格/棋盘

时间:2015-06-21 15:31:47

标签: python drag-and-drop pygame

是否有一种方法可以在pygame中实现精灵,当拖动时,捕捉到不可见(或可见)的网格?有点像拖累?如果是这样,怎么样?我一直试图做一些精灵重叠,但是为每个网格线制作一个if语句太繁琐了。那么如何制作一个对齐网格的拖放精灵呢?这是一个国际象棋程序。我很感激你的帮助。

2 个答案:

答案 0 :(得分:2)

使用for循环制作棋盘角落数组。

corners = []
for x in range(edgeRight, edgeLeft, interval):
  for y in range(edgeTop, edgeBottom, interval):
    corners.append((x,y))

然后,创建一个事件监听器。在拖动文章时,将此代码插入到您拥有的任何while语句中:

px, py = Piece.Rect.topleft //using tuples to assign multiple vars
for cx, cy in corners:
  if math.hypot(cx-px, cy-py) < distToSnap:
    Piece.setPos((cx,cy))
    break

我不知道你的实际代码是什么,但这应该会给你一个想法。同样,pygame没有对齐网格功能。

答案 1 :(得分:0)

因此,可以使用python中的round函数非常简单地完成此操作。

SELECT * from users

这通过将精灵的坐标四舍五入到最近的网格正方形来操纵舍入功能。