我正在制作一个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
答案 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