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

1 投票
2 回答
1344 浏览
提问于 2025-04-17 00:03

我正在制作一个乒乓球游戏,目的是为了学习。我需要在鼠标按下的时候,让球从屏幕中间开始移动(当球越过一个挡板时,它会被送到中间)。我试过以下代码,但它没有任何反应,可能是我对语法理解得不够。请尽量保持简单,并解释一下,我不想要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

我作为一个初学者,正在研究同样的问题,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),我参考了文档而不是源代码,发现 这里 提到有一个 pygame.mouse.get_pressed() 方法:这个方法可以获取鼠标按钮的状态。

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

所以我觉得问题出在我们代码中使用这个方法,而不是用错了函数……

好的,我已经解决这个问题了 - 我的修复方法:

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() 中调用这个方法会让选中的精灵移动到鼠标的位置。希望这对你有帮助。

0

根据这段代码,我们无法确切知道发生了什么,但看起来你用错了函数来判断鼠标按钮是否被按下。

Screen.is_pressed 这个函数来自游戏模块,它实际上是用来检查键盘按键状态的,而不是鼠标按钮。你可能想用 Screen.mouse_buttons 这个函数,它是用来检查鼠标按钮状态的。你可以在一个循环里这样使用它(假设你有一个叫 'screen' 的 games.Screen 实例):

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

撰写回答