Python飞机大战,一直按着键不放问题(持续按键)

看红色代码

# 游戏时钟
clock = pygame.time.Clock()

# 定义画面中各组件的初始位置
plane_rect = pygame.Rect(0, 168, 64, 64)
bg_rect = pygame.Rect(0, 10, 600, 400)
foreground_rect = pygame.Rect(0, 302, 1018, 98)
foreground_light_rect = pygame.Rect(580, 302, 1018, 98)

pygame.key.set_repeat(1, 1)    # 表示每隔1毫秒发送一个pygame.KEYDOWN,事件间隔1毫秒

# 无限循环,窗口不关闭,(游戏循环)

while True:

    # 一秒钟60帧
    clock.tick(60)
    # 修改初始位置的x,y坐标
    foreground_rect.x -= 1
    # plane_rect.x += 1
    bg_rect.x -= 1

    # 获取事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            # 直接退出系统
            exit()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN :
            plane_rect.y += 5
            if plane_rect.bottom >=464 :
                plane_rect.y = 0

        if event.type == pygame.KEYDOWN and event.key == pygame.K_UP :
            plane_rect.y -= 5
            if plane_rect.bottom <= 0:
                plane_rect.y = 400
        # break

    surface.blit(bg, bg_rect)
    surface.blit(plane1, plane_rect)
    surface.blit(foreground, foreground_rect)
    # 屏幕更新才能看到图片
    if foreground_rect.x == -438:
        foreground_rect.x = 0
    if bg_rect.x == -638:
        bg_rect.x = 0

    pygame.display.update()

    print(event)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你想检测键盘按键的按下,而且不使用第三方库,你可以使用 Python 的标准库中的 msvcrt 模块。这个模块包含了一个 getch() 函数,可以读取键盘的输入。你可以使用如下代码来检测键盘按键的按下: ```python import msvcrt while True: if msvcrt.kbhit(): key = msvcrt.getch() print("Key pressed:", key) ``` 上面的代码会一直检测键盘输入,当有键盘按键按下时,会打印出按键的值。 注意,msvcrt 模块只能在 Windows 系统上使用。如果你在其他系统上运行此代码,会抛出 ImportError。 ### 回答2: 如果要在Python中实现键盘按键按下的功能,可以使用内置库`msvcrt`,该库提供了一些函数用于从控制台读取输入。具体步骤如下: 1. 导入`msvcrt`库:`import msvcrt` 2. 使用`msvcrt.kbhit()`函数检测键盘是否有按键按下,返回值为`True`表示有键按下,为`False`表示无键按下。 3. 使用`msvcrt.getch()`函数获取按下的键值,该函数会阻塞程序直到有按键按下。 4. 对获取的键值进行相应处理,例如可以使用`ord()`函数将字符转换成对应的ASCII码。 下面是一个示例代码,实现了获取键盘按键按下的字符并打印出对应的ASCII码: ```python import msvcrt while True: if msvcrt.kbhit(): key = msvcrt.getch() ascii_code = ord(key) print(f"Key: {key}, ASCII Code: {ascii_code}") ``` 以上代码会不断循环检测键盘是否有按键按下,并将按下的字符及其对应的ASCII码打印出来。请注意,该代码运行在Windows系统上,因为`msvcrt`库是Windows特有的库。 希望以上内容对您有所帮助! ### 回答3: 在Python中,我们可以使用内置的`msvcrt`模块来检测键盘按键是否被按下,而不使用任何第三方库。以下是一个简单的示例代码: ```python import msvcrt def detect_keypress(): while True: if msvcrt.kbhit(): # 检测是否有键盘按键按下 key = msvcrt.getch() # 获取按下的键值 key = key.decode() # 将键值转换为字符串 if key == '\r': # 如果按下的是回车键,则停止检测 break print("按下了键:" + key) detect_keypress() ``` 这段代码中,我们使用了`kbhit()`函数来检测键盘是否有按键按下。如果有按键按下,则使用`getch()`函数获取按下的键值,并将其转换为字符串格式。然后,我们可以根据具体需求对按下的按键做相应的处理。在示例中,我们简单地打印了按下的键值。 需要注意的是,这段代码只能在Windows系统上运行,因为`msvcrt`模块是Windows特有的。对于其他操作系统,可能需要使用特定的模块或方法来实现类似的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值