- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个程序可以绘制一个收缩的绿色圆圈,当您按p时,圆圈消失并出现一条红线。但是当我再次按 p 时,绿色圆圈应该重新出现,但事实并非如此。
每当我第一次按 p 后调用 pygame.event.get_pressed()
函数时,它总是返回相同的值。我是否必须使用某种键盘重置才能使 get_pressed()
方法再次正确读取?
这是我的代码:
import pygame
import time
BLACK = (0,0,0)
WHITE = (255,255,255)
GREEN = (0,255,0)
RED = (255,0,0)
pygame.init()
size = (700,700)
screen = pygame.display.set_mode(size)
screennumber = 1
pygame.display.set_caption("Game Test")
running = True
width = 350
clock = pygame.time.Clock()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(BLACK)
pressed = pygame.key.get_pressed()
print(pressed)
if pressed[pygame.K_p]:
screennumber = 2
else:
screennumber = 1
if screennumber == 1:
pygame.draw.circle(screen,GREEN,[350,350], width,1)
pygame.display.flip()
if width>1:
width = width-1
if screennumber == 2:
time.sleep(0.25)
pause = True
while pause:
pressed = pygame.key.get_pressed()
print(pressed)
if pressed[pygame.K_r]:
pause = False
pygame.draw.line(screen,RED,[0,0],[700,700],5)
pygame.display.flip()
clock.tick(21)
pygame.display.flip()
clock.tick(21)
pygame.quit()
谢谢!
最佳答案
使用 pygame.key.get_pressed 并不是实时处理按键的可靠方法。该函数返回一个字典,其中包含函数调用时键盘的状态。但是,如果在调用之间按下并释放某个键,则字典将与根本没有按下该键一样。检查用户是否按下某个键的更好方法是在事件循环中处理 pygame.KEYDOWN 事件。然后检查KEYDOWN
是否是您想要的 key 。
这是您的程序版本,分为三个部分:1) 处理事件,2) 更新游戏元素,3) 绘制到屏幕。
import pygame
import time
BLACK = (0,0,0)
WHITE = (255,255,255)
GREEN = (0,255,0)
RED = (255,0,0)
pygame.init()
size = (700,700)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Game Test")
running = True
width = 350
paused = False
clock = pygame.time.Clock()
while running:
# process all events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# -- HERE IS THE RELEVANT SECTION --
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_p:
paused = not(paused)
# update everything
if not paused:
if width > 1:
width = width-1
# draw everything
screen.fill(BLACK)
if not paused:
pygame.draw.circle(screen,GREEN,[350,350], width,1)
else:
pygame.draw.line(screen,RED,[0,0],[700,700],5)
pygame.display.flip()
# update the clock
clock.tick(21)
pygame.quit()
如果您对此代码有任何疑问,请告诉我。
关于Python pygame.event.get_pressed() 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151465/
我的程序中的键盘事件遇到一些问题。长话短说,我正在使用 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 当我按“
我是一名优秀的程序员,十分优秀!