栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

外星人入侵项目实现按住空格全自动发射子弹

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

外星人入侵项目实现按住空格全自动发射子弹

外星人入侵项目实现按住空格全自动发射子弹
前言

实现全自动其实很简单,只要加一个定时器即可。
一共也就用到两个语句:

pygame.time.set_timer

key_press = pygame.key.get_pressed()
if key_press[pygame.K_SPACE]:


提示:以下是本篇文章正文内容,下面案例可供参考

一、 pygame.time.set_timer

此句用于定时——多少毫秒之后响应一次循环

1.先设置一个常量 FIRE_EVENT = pygame.USEREVENT
import pygame


class Settings:
    """存储游戏《外星人入侵》中所有设置的类"""
    # 设置开火常量
    FIRE_EVENT = pygame.USEREVENT

这里我把此常量放在了settings.py 当然也可以放进主程序,我只是为了主程序的简洁易读性

2.在主程序加入这个定时器
from settings import Settings

class AlienInvasion:
    """管理游戏资源和行为的类"""

    def __init__(self):
        """初始化游戏并创建游戏资源"""
        pygame.init()
        self.settings = Settings()  
        pygame.time.set_timer(Settings.FIRE_EVENT, 250)

我这里设置了250 表示每250毫秒执行一次

二、 key_press = pygame.key.get_pressed() if key_press[pygame.K_SPACE]:

此语句用于检测按键是否被按下并执行命令

1.先遍历按键事件并写入此代码
 def _check_events(self):
        # 监视键盘和鼠标事件。
        for event in pygame.event.get():
            key_press = pygame.key.get_pressed()
            if key_press[pygame.K_SPACE]:

这种方法不同于event.type == pygame.KEYDOWN要执行循环命令需要加True,Flase开关,它可以持续响应按键被按下的情况

2.设置条件并创建子弹
    def _check_events(self):
        # 监视键盘和鼠标事件。
        for event in pygame.event.get():
            key_press = pygame.key.get_pressed()
            if key_press[pygame.K_SPACE]:
                """创建一颗子弹,并将其加入编组bullets中"""
                if len(self.bullets) < self.settings.bullets_allowed and event.type == Settings.FIRE_EVENT:
                    new_bullet = Bullet(self)  # 引用Bullet类创建子弹赋值给new_bullet
                    self.bullets.add(new_bullet)  # 在sprite中添加子弹

self.settings.bullets_allowed这里我设置的是10 不然根本没有“哒哒哒”的感觉,当然也可以不要这个条件,重要的是event.type == Settings.FIRE_EVENT这个条件,当延迟250毫秒时在运行发射子弹的代码

总结 最后我们来看一下效果ok,大功告成!感谢您的聆阅,希望对您有所帮助!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号