【发布时间】:2021-11-10 14:14:05
【问题描述】:
我正在使用 pygame 创建 2 人 PONG 游戏。我的球拍两边都有。
其中一个用W 和S 移动,另一个用UP 和DOWN 箭头移动。
我正在使用此代码来移动球拍:
chx = 0.051
chy = 0.051
def ychangeneg():
global y
if y <= 4:
return
else:
y -= chy
return
def ychangepos():
global y
if y >= 327:
return
else:
y += chy
return
def y1changeneg():
global y1
if y1 <= 4:
return
else:
y1 -= chy
return
def y1changepos():
global y1
if y1 >= 327:
return
else:
y1 += chy
return
while True:
for event in pygame.event.get():
keyQ = pygame.key.get_pressed()
if event.type == pygame.QUIT:
system("cls")
quit()
keyboard.add_hotkey("w",lambda:ychangeneg())
keyboard.add_hotkey("s",lambda:ychangepos())
keyboard.add_hotkey("up",lambda:y1changeneg())
keyboard.add_hotkey("down",lambda:y1changepos())
chy 变量改变球拍的 y 并移动它。但是我有这些问题:
- 当我开始握键时,球拍开始延迟移动,然后变得更快
- 当我同时按住 2 个键(
W和UP arrow)时,球拍不动
起初,我发现了一些使用key= pygame.key.get_pressed()的代码,但是当你用这个代码按住一个键时,它会移动但不是连续的。
【问题讨论】:
-
顺便说一句,您可以删除放在
return之后的else语句,因为如果上面的if语句被评估为True,那么函数会在检查else语句之前停止.您也可以将lambda:ychangeneg()更改为ychangeneg而不使用括号以获得相同的结果。 -
见documentation:
pygame.key.get_pressed()是要走的路。另请查看this question。
标签: python pygame keyboard pong