为Pygame游戏添加带5秒冷却重置的超级跳跃功能
实现Pygame的冷却式超级跳跃功能
首先得在游戏初始化阶段添加两个变量,用来管理超级跳跃的冷却逻辑:
import pygame pygame.init() # 你的其他初始化代码(窗口、玩家、敌人等)... # 超级跳跃冷却相关配置 super_jump_cooldown = 5000 # 冷却时长5秒,单位为毫秒 last_super_jump_time = 0 # 记录上次使用超级跳跃的时间点
然后修改键盘事件处理的代码,按下E键时先检查冷却时间是否达标,同时确保玩家处于地面状态:
if event.type == pygame.KEYDOWN: #if any key pressed if event.key == pygame.K_w: #checking for specific key if player_rect.bottom > 299: player_grav = -22.5 if event.key == pygame.K_e: #checking for specific key current_time = pygame.time.get_ticks() # 获取从游戏启动到现在的毫秒数 # 同时满足冷却时间已过、玩家在地面两个条件,才触发超级跳跃 if (current_time - last_super_jump_time >= super_jump_cooldown) and (player_rect.bottom > 299): player_grav = -52.5 # 设置更强的向上重力,数值可根据游戏手感调整 last_super_jump_time = current_time # 重置冷却计时器
补充说明
pygame.time.get_ticks()是Pygame自带的时间工具,用它计算时间差比手动维护定时器更简单稳定。- 超级跳跃的重力值我设置为-52.5,是普通跳跃的-22.5加上你原本写的-30,你可以根据实际游戏体验调整这个数值,绝对值越大跳得越高。
- 如果想给玩家添加冷却提示,比如在屏幕上显示剩余冷却时间,可以在游戏主循环的绘制部分加入这段代码:
# 计算剩余冷却时间,确保数值不会为负 remaining_cooldown = max(0, super_jump_cooldown - (pygame.time.get_ticks() - last_super_jump_time)) # 生成冷却提示文本并绘制到屏幕 font = pygame.font.SysFont(None, 36) cooldown_text = font.render(f"超级跳跃冷却: {remaining_cooldown//1000}s", True, (255,255,255)) screen.blit(cooldown_text, (10, 10)) # 显示在左上角,位置可自行调整
内容的提问来源于stack exchange,提问作者Jamie Cooper
相关产品推荐
相关产品推荐

