Python 有没有办法在pygame中获取特定对象/点击的坐标?

Python 有没有办法在pygame中获取特定对象/点击的坐标?,python,pygame,Python,Pygame,我想写一个程序,如果我点击,在pygame屏幕上画一个圆圈。如果再次单击,将绘制另一个圆以及一条将其连接到先前绘制的圆的线。有没有办法追踪你上次点击的位置的坐标 另外,我想在多次点击后创建一个类似星座的效果(帮助您可视化)我认为这将解决您的问题: “pygame.mouse.get_pos() 获取鼠标光标的位置 获取位置()->(x,y) 您可以使用pygame.draw.circle()绘制一个圆心位于鼠标所在点的圆,以及一个多边形或多条线(如果您想连接它们) 我希望这有助于添加鼠标位置列

我想写一个程序,如果我点击,在pygame屏幕上画一个圆圈。如果再次单击,将绘制另一个圆以及一条将其连接到先前绘制的圆的线。有没有办法追踪你上次点击的位置的坐标


另外,我想在多次点击后创建一个类似星座的效果(帮助您可视化)

我认为这将解决您的问题:

“pygame.mouse.get_pos() 获取鼠标光标的位置 获取位置()->(x,y)

您可以使用
pygame.draw.circle()
绘制一个圆心位于鼠标所在点的圆,以及一个多边形或多条线(如果您想连接它们)


我希望这有助于添加鼠标位置列表:

points=[]
单击鼠标时将位置添加到列表:

如果e.type==MOUSEBUTTONDOWN:
如果e.button==1:
点。附加(e.pos)
在循环中绘制点:

积分中的pos的
:
画圆(屏幕,绿色,位置10)
如果至少有2个点,则可以通过以下方式绘制点之间的线:

如果长度(点)>1:
绘制线(屏幕、绿色、假、点)
根据你前面的问题,我建议如下:

从pygame导入*
init()
尺寸=宽度,高度=650
屏幕=显示。设置模式(大小)
黑色=(0,0,0)
绿色=(0,255,0)
运行=真
myClock=time.Clock()
点数=[]
#游戏循环
运行时:
对于事件中的e.get():
如果e.type==退出:
运行=错误
如果e.type==MOUSEBUTTONDOWN:
如果e.button==1:
点。附加(e.pos)
如果e.button==3:
点数=[]
屏幕填充(黑色)
如果len(点)>1:
绘制线(屏幕、绿色、假、点)
对于积分中的pos:
画圆(屏幕,绿色,位置10)
display.flip()
我的时钟滴答(60)
退出

或者,可以存储单击的位置(
prev_pos
),并在下次单击鼠标画线时使用。
我不建议这样做,因为您将丢失有关单击位置的信息:

从pygame导入*
init()
尺寸=宽度,高度=650
屏幕=显示。设置模式(大小)
黑色=(0,0,0)
绿色=(0,255,0)
运行=真
myClock=time.Clock()
上一个位置=无
#游戏循环
运行时:
对于事件中的e.get():
如果e.type==退出:
运行=错误
如果e.type==MOUSEBUTTONDOWN:
如果e.button==1:
如果上一个位置!=无:
绘制线(屏幕、绿色、上一位置、e位置)
上一个位置=东位置
画圆(屏幕,绿色,e.pos,10)
如果e.button==3:
上一个位置=无
屏幕填充(黑色))
display.flip()
我的时钟滴答(60)
退出

@conyieie这个概念非常基本。无论如何,我已经提供了一个替代解决方案。但是,您必须存储有关上一次位置单击的信息。只能检索光标的实际位置。系统不会为您跟踪鼠标位置历史。无论如何,我已经解释了解决方案。您应该尝试理解它。基本概念是,在每一帧中重新绘制整个场景。这将允许高级概念,如操纵或撤消/重做。谢谢。如果prev_pos:?我认为if语句必须有某种条件或什么。例如,如果prev_pos==4:如果没有可比较的内容,它如何工作如果prev\u pos:与
如果prev\u pos!=None:
相同,则将其发送到?@conyieie
注意
prev\u pos
None
初始化。在第一次单击时,您无法绘制线,因为没有上一点。
Returns the X and Y position of the mouse cursor. The position is relative to the top-left corner of the display. The cursor position can be located outside of the display window, but is always constrained to the screen."