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