- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
好的,所以我正在制作一个基本的 spaceship 游戏。
我无法让旋转工作,因为它扰乱了位图,但这是另一个问题。我应该使用 gif 吗?还有其他文件类型建议吗?
回到正题,所以:
k = pygame.key.get_pressed()
是的,不言自明。这不起作用,因为它会在按下时返回每个键。
所以,在其他地方:
d = k[pygame.K_d]
还有另一行:
print d
还有一个:
if d:
因此,当按下键盘上的每个键时,k 返回。
d 无限期地返回 0,无论 d 是否被按下。
d 始终为 0。
因此关于 d 的陈述永远不会为真。
为什么会这样?
最佳答案
您可能对 get_pressed() 感到困惑实际上是在做。来自文档:
Returns a sequence of boolean values representing the state of every key on the keyboard. Use the key constant values to index the array. A True value means the that button is pressed.
Getting the list of pushed buttons with this function is not the proper way to handle text entry from the user. You have no way to know the order of keys pressed, and rapidly pushed keys can be completely unnoticed between two calls to pygame.key.get_pressed(). There is also no way to translate these pushed keys into a fully translated character value. See the pygame.KEYDOWN events on the event queue for this functionality.
换句话说,当您调用 get_pressed() 时,您将获得键盘状态的表示在调用 get_pressed() 时。
例如,假设您在游戏的前一秒调用了 get_pressed()。您将返回一个结构,其中列出了键盘上的所有键以及它们是否被按下(它们都将为 false)。
在游戏开始两秒后,您按下了一个键。如果您查看之前查看的相同结构,它仍然会说没有按下所有内容,因为您仍在查看键盘的状态,就像一秒钟前一样。但是,如果您再次调用 get_pressed(),您会得到一个更新后的新结构,并且这个新结构应该显示按键已按下。
解决此问题的一种方法是执行以下操作:
while True:
# Update Stuff
# Draw Stuff
state = pygame.key.get_pressed()
# Now check the keys
现在,您可以通过键盘获得最新信息。
应该注意的一件事是,使用上述功能,您仍然可能会错过键盘按键。如果更新功能花费了很长时间,则可能会在足够短的时间内按下然后松开某个键,以至于您不会在按下该键时调用 get_pressed()。
如果这可能是个问题,您可能希望改用事件循环。像...
is_moving = False
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN and event.key == pygame.K_d:
is_moving = True
elif event.type == pygame.KEYUP and event.key == pygame.K_d:
is_moving = False
关于python - 是我还是 pygame.key.get_pressed() 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372314/
我的程序中的键盘事件遇到一些问题。长话短说,我正在使用 pygame.KEYDOWN 事件,但后来几乎每个人都听说 get_pressed() 是一个更合适的选项。我相应地更改了代码,但遇到了一些问题
代码如下 import pygame pygame.init() info = pygame.display.Info() win = pygame.display.set_mode(((info.c
我知道已经有一些关于同一问题的问题,但提出的解决方案对我没有帮助。 我想在任何给定时间监视箭头键的状态(按下/未按下),因此我有以下代码: import pygame pygame.init() a=
我在 pygame 中遇到了一个“简单”的问题,这让我完全抓狂。基本上,当我尝试读取键盘的状态时,pygame.get_pressed() 内的所有值都为零。我已经尝试了一切但没有任何结果。这是我的代
pygame.get_keypressed() 为每个按下的按键返回一个由 0 和 1 组成的长列表,可以由 pygame 映射。下面的示例,是否有直接的方法来提取按下的按键的字母表示? 我试图避免使
我有一个程序可以绘制一个收缩的绿色圆圈,当您按p时,圆圈消失并出现一条红线。但是当我再次按 p 时,绿色圆圈应该重新出现,但事实并非如此。 每当我第一次按 p 后调用 pygame.event.get
我正在尝试使用 Python 中的 pygame 为应用程序制定简单的控件。我已经掌握了基础知识,但我遇到了奇怪的墙:我正在使用箭头键来控制我的角色。如果我按住一个箭头键,然后按住另一个箭头键(沿对角
我在 Stack Overflow 上阅读过与此类似的问题,但没有帮助。这是我的代码: import pygame from pygame.locals import * pygame.init()
这是我的蛇游戏代码的开头。在按下箭头键和蛇的实际转弯之间有一个恼人的延迟。 很难准确地转动并捕获“苹果”。 我希望这更具响应性。如何调整我的代码以使转弯更灵敏? import random impor
我是 Python 新手,但我决定尝试在 Pygame 中制作一款格斗游戏。我的角色只会向左移动,并且只有在强制更新时才会移动。 我尝试过: 按下按键 if event.key == pygame.K
我最近开始使用 python 并决定使用 pygame 创建一个游戏,其中基本上有方 block 掉落,你必须越过它们。您可以使用向左键和向右键移动,但如果您按住它们,什么也不会发生,我不知道为什么,
我正在编写一款自上而下的射击游戏,最近试图找出一种在按住某个键的同时连续移动我的角色的方法。我在互联网上搜索一种方法,发现了 pygame.key.get_pressed() ,这非常有效,直到我尝试
尽管四处寻找,我似乎找不到这个看似简单问题的答案: 我是 pygame 的新手(但不是 python),并且正在尝试通过连续按下按钮来获取一些代码 - 但 get_pressed 似乎对我不起作用。我
正在做print pygame.key.get_pressed()打印出很多 0的,但是有什么办法可以打印这些 0作为一个字母输出,然后将该字母标记为变量? 这就是我的意思: import pygam
好的,所以我正在制作一个基本的 spaceship 游戏。 我无法让旋转工作,因为它扰乱了位图,但这是另一个问题。我应该使用 gif 吗?还有其他文件类型建议吗? 回到正题,所以: k = pygam
我是 python 编码新手,需要一些单元测试方面的帮助。我想测试我的模块,根据用户按下的内容移动 Pygame 中的图像位置。这是我的模块: def moveRight(self): sel
这个问题在这里已经有了答案: How to get keyboard input in pygame? (11 个答案) How can I make a sprite move when key
我正在尝试创建一个函数,如果按下一个键,变量就会发生变化。这将被放入一个在屏幕上移动 Sprite 的类中。当松开按键时,while 循环被破坏。然而,什么也没有发生。 while 循环正在运行,我没
我的程序有两个问题: 关闭程序时出现错误:keys = pygame.key.get_pressed() pygame.error: video system not initialized 当我按“
我是一名优秀的程序员,十分优秀!