- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Stack Overflow 上阅读过与此类似的问题,但没有帮助。这是我的代码:
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Hello World')
pygame.mouse.set_visible(1)
done = False
clock = pygame.time.Clock()
while not done:
clock.tick(60)
keyState = pygame.key.get_pressed()
if keyState[pygame.K_ESCAPE]:
print('\nGame Shuting Down!')
done = True
按 escape
不会退出游戏或打印消息。这是一个错误吗?如果我打印 keyState[pygame.K_ESCAPE] 的值,它始终为零。
最佳答案
问题是您不处理 pygame 的事件队列。您应该在循环结束时简单地调用 pygame.event.pump()
,然后您的代码就可以正常工作了:
...
while not done:
clock.tick(60)
keyState = pygame.key.get_pressed()
if keyState[pygame.K_ESCAPE]:
print('\nGame Shuting Down!')
done = True
pygame.event.pump() # process event queue
来自docs (强调我的):
pygame.event.pump()
internally process pygame event handlers
pump() -> None
For each frame of your game, you will need to make some sort of call to the event queue. This ensures your program can internally interact with the rest of the operating system. If you are not using other event functions in your game, you should call pygame.event.pump() to allow pygame to handle internal actions.
This function is not necessary if your program is consistently processing events on the queue through the other pygame.event functions.
There are important things that must be dealt with internally in the event queue. The main window may need to be repainted or respond to the system. If you fail to make a call to the event queue for too long, the system may decide your program has locked up.
请注意,如果您只是在主循环中的任何地方调用 pygame.event.get()
,则不必执行此操作;如果你不这样做,你可能应该调用 pygame.event.clear()
这样事件队列就不会填满。
关于python - pygame.key.get_pressed() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938170/
我的程序中的键盘事件遇到一些问题。长话短说,我正在使用 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 当我按“
我是一名优秀的程序员,十分优秀!