在Python中按下鼠标时移动精灵

时间:2011-08-21 17:32:37

标签: python mouse sprite move mouseclick-event

我正在制作一个Pong克隆用于学习目的,并且当按下鼠标时需要让球从屏幕中间移动(当它经过桨时它被发送到那里)。我已经尝试了以下代码,但它什么也没做,所以我可能不理解语法。尽量保持尽可能简单,并解释一下,我宁愿没有50行代码(我想了解我在这里使用的所有内容)。我认为这是所有相关的代码,对不起,如果不是。感谢。

def middle(self):
    """Restart the ball in the centre, waiting for mouse click. """
    # puts ball stationary in the middle of the screen
    self.x = games.screen.width/2
    self.y = games.screen.height/2
    self.dy = 0
    self.dx = 0

    # moves the ball if mouse is pressed
    if games.mouse.is_pressed(1):
        self.dx = -3

2 个答案:

答案 0 :(得分:0)

根据该代码片段无法确切知道发生了什么,但看起来您使用了错误的函数来检测是否按下了鼠标按钮。

来自游戏模块的

Screen.is_pressed包裹pygame.key.get_pressed,其仅检测键盘键的状态,而不是鼠标按钮。您可能需要包含Screen.mouse_buttons的函数pygame.mouse.get_pressed。你可以在这样的循环中使用它(我假装你有games.Screen的实例叫做'screen'):

left, middle, right = screen.mouse_buttons()
# value will be True if button is pressed
if left:
    self.dx = -3

答案 1 :(得分:0)

我正在考虑与初学者Python编码器相同的问题 - Games.py(修订版1.7)在各种类中包括多个is_pressed方法,包括键盘和鼠标。

class Mouse(object):

#other stuff then 
def is_pressed(self, button_number):
    return pygame.mouse.get_pressed()[button_number] == 1

因为pygame是一个编译模块(我有1.9.1)引用文档而不是源代码,我发现here有一个pygame.mouse.get_pressed(): 将获得鼠标按钮的状态

get_pressed() -> (button1, button2, button3)

所以我认为问题是在(y)我们的代码中使用这个而不是使用错误的函数.....

确定这个工作 - 我的修复:

class myClass(games.Sprite):
    def update(self):
        if games.mouse.is_pressed(0)==1:
            self.x=games.mouse.x
            self.y=games.mouse.y

调用Main()会导致所选精灵移动到鼠标位置。 HTH