gpt4 book ai didi

python - pygame - 将鼠标对齐到网格

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:34 24 4
gpt4 key购买 nike

我正在使用 pygame 制作一个小型平台游戏,并决定为每个级别制作一个级别编辑器比键入每个 block 的坐标和大小更容易。


我正在使用一组水平和垂直的线来制作网格,以便更轻松地绘制点。

这是我的网格代码:

def makeGrid(surface, width, height, spacing):
for x in range(0, width, spacing):
pygame.draw.line(surface, BLACK, (x,0), (x, height))
for y in range(0, height, spacing):
pygame.draw.line(surface, BLACK, (0,y), (width, y))

我希望用户的鼠标以 10px 的间隔移动,只移动到交点。这是我试图强制鼠标捕捉到网格的方法。

def snapToGrid(mousePos):
if 0 < mousePos[0] < DISPLAYWIDTH and 0 < mousePos[1] < 700:
pygame.mouse.set_pos(roundCoords(mousePos[0],mousePos[1]))

(顺便说一句,roundCoords() 返回四舍五入到最接近的十个单位的坐标。)

(顺便说一句,snapToGrid() 在主游戏循环中被调用(但未完成))

...但是 this碰巧,鼠标不想移动到其他任何地方。


关于如何解决这个问题有什么建议吗?如果需要,我也可以更改网格代码。非常感谢。

附言这是在 64 位 Python 2.7 上使用最新版本的 PyGame

最佳答案

首先,我认为您离得不远了。

我认为问题在于代码在每个游戏循环中运行得相当快,因此您的鼠标在被设置为函数返回的位置之前没有时间移动太远。

我想研究的不是 pygame.mouse.set_pos() 只是将捕捉到的坐标返回给一个变量,然后用它在屏幕上 blit 一个标记,突出显示interest(这里我用了一个圆圈,但你可以只 blit 鼠标的图像;))。并使用 pygame.mouse.set_visible(False) 隐藏您的实际鼠标:

def snapToGrid(mousePos):
if 0 < mousePos[0] < DISPLAYWIDTH and 0 < mousePos[1] < 700:
return roundCoords(mousePos[0],mousePos[1])

snap_coord = snapToGrid(mousePos)# save snapped coordinates to variable

pygame.draw.circle(Surface, color, snap_coord, radius, 0)# define the remaining arguments, Surface, color, radius as you need

pygame.mouse.set_visible(False)# hide the actual mouse pointer

希望对你有用!

关于python - pygame - 将鼠标对齐到网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39252088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com