pygame飞机大战用精灵组层编写英雄系列(五)英雄手酸了,想滚键盘

在pygame的飞机大战游戏中,原有的按键射击方式导致玩家手酸。为解决此问题,作者通过添加插件实现了滚键盘模式,允许玩家持续射击而无需一直按键。在heroplane.py中增加了发射键的储存、发射间隔和初始时间等设置,并定义了发射键的按下和松开函数。在main.py中调整了按键控制逻辑,使得在持续移动后可以轻松滚键盘进行射击。完整代码可在提供的链接中查看。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小喽啰一刀一个,倒也轻松,可每次射击要按键,手酸得不行,五姑娘有意见了。

来个插件,增加滚键盘模式吧。

在heroplane.py的初始函数里,添加发射按键的储存列表,发射间隔,发射初始时间等。

        #发射按键储存
        self.fire_key_list = []
        #设置导弹发射间隔 默认 1000毫秒
        self.bullet_start_time= pygame.time.get_ticks()
        self.bullet_interval = 400

增加发射键按下和松开函数

 # 发射键按下向列表添加 j
    def fire_key_down(self,key):
        self.fire_key_list.append(key)
    # 发射键松开向列表删除 j
    def fire_key_up(self, key):
        if len(self.fire_key_list) != 0:  # 判断是否为空
            try:
                self.fire_key_list.remove(key)
            except Exception:
                raise

增加持续发射函数

    # 按键j不放,持续开火
    def press_fire(self):
        """持续发射子弹
        """
        current_time = pygame.time.get_ticks()
        pass_time = current_time - self.bullet_start_time
        if len(self.fire_key_list) != 0 and pass_time > self.bullet_interval:
            self.fire_bullet()
            self.bullet_start_time = current_time

在main.py里修改下按键控制信息

            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_j:
                    #普通射击
                    self.hero.fire_key_down(pygame.K_j)
             #按键松开
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_j:
                    self.hero.fire_key_up(pygame.K_j)

在持续移动函数后面添加

        self.hero.press_move()
        self.hero.press_fire()

轻松滚键盘了。

目前的全部代码见链接

https://gitee.com/hailler/hero/tree/master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值