python - 如何将键盘输入变成函数以减少混乱
问题描述
这是一个仅出于组织目的的问题,但在 pygame 中,是否可以将键盘输入放入函数中。我正在使用 pycharm,而从 pycharm 我正在使用 pygame。编码
if event.type == pygame.KEYDOWN:
print("Press")
if event.key == pygame.K_LEFT:
HomuraX_change = -0.5
if event.key == pygame.K_RIGHT:
HomuraX_change = 0.5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
HomuraX_change = 0
在将其放入while循环之前,我尝试在函数中使用它。但这由于某种原因不起作用。
我把它放在一个函数中,比如
def movement():
if event.type == pygame.KEYDOWN:
print("Press")
if event.key == pygame.K_LEFT:
HomuraX_change = -0.5
if event.key == pygame.K_RIGHT:
HomuraX_change = 0.5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
HomuraX_change = 0
我把它放在一个while循环中,让我的角色移动。在 pygame 的终端中,第二行的“打印”正在运行,这表明它在 pycharm 中工作,但是字符没有移动。任何帮助将不胜感激!!
解决方案
您需要将事件作为参数传递给函数。变量HomuraX_change
需要声明global
def movement(event):
global HomuraX_change
if event.type == pygame.KEYDOWN:
print("Press")
if event.key == pygame.K_LEFT:
HomuraX_change = -0.5
if event.key == pygame.K_RIGHT:
HomuraX_change = 0.5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
HomuraX_change = 0
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
movement(event)
# [...]
推荐阅读
- spring-boot - 如何暂停/恢复单个 Spring JMS 消息侦听器
- tensorflow - AssertionError:使用 predict 函数时,batch_size 必须能被正在使用的 TPU 内核数(1 vs 8)整除
- mysql - 如何处理对生成自动递增主 ID 的表的多次插入?
- c# - 没有 else 子句的单行 If 条件
- python-3.x - 在写入 csv 时从数据框中删除列
- javascript - 如何将变量传递给 HTML 中的 JavaScript 函数?
- django - 使用 Wagtail 的视频网站
- scala - 将本地模块导入 Jupyter Notebook
- c# - 如何将网址添加到电子邮件正文以默认在 Google Chrome 中打开
- azure - AzureADB2C.UI - 登录后将用户重定向到页面