Python基础学习之飞机大战游戏类框架搭建

本文详细介绍了如何设计飞机大战游戏的主程序,包括明确职责、创建PlaneGame类、背景精灵组的实现,以及背景交替滚动的逻辑。涉及类的设计、游戏循环和精灵管理,同时展示了如何在plane_sprites模块中创建和更新背景精灵。
摘要由CSDN通过智能技术生成

目标

  • 明确主程序职责
  • 实现主程序类
  • 准备游戏精灵组

01.明确主程序

职责游戏主程序的职责可以分为两个部分:游戏初始化;游戏循环

根据职责,设计 PlaneGame 类如下:

PlaneGame

screen

clock

精灵组或精灵

__init__(self):

__create_sprites(self):

 

start_game(self):

__event_handler(self):

__check_collide(self):

__update_sprites(self):

__game_over():

 

 

 

 

 

 

 

 

 

02.实现飞机大战主游戏类

  • plane_main
  1. 封装 主游戏类
  2. 创建 游戏对象
  3. 启动游戏
  • plane_sprites
  1. 封装游戏中 所有 需要使用的精灵子类
  2. 提供游戏的相关工具

游戏背景

01.背景交替滚动的思路确定

1.1实现思路分析

  1. 创建两张背景图像精灵:第1张完全和屏幕重合;第2张在屏幕的正上方
  2. 两张图像 一起向下方运动:self.rect.y += self.speed
  3. 当 任意背景精灵 的 rect.y >= 屏幕的高度 说明已经 移动到屏幕的下方
  4. 将 移动到屏幕下方的这张图像 设置到屏幕的正上方:rect.y = -rect.height

1.2 设计背景类

GameSprite

image

rect

speed

__init__(self,  image_name, speed=1):

update(self):

 

 

 

 

 

Background

__init__(self, is_alt):

update(self):

 

 

 

初始化方法:

  • 直接指定 背景图片
  • is_alt 判断是否是另一张图像:False 表示 第一张图像,需要与屏幕重合;True 表示 另一张图像,在屏幕的正上方

update()方法:

  • 判断 是否移动出屏幕,如果是将图像设置到屏幕的正上方

02. 显示精灵的基本实现

2.1 背景精灵的基本实现

在 plane_sprites 新建 Background 继承自 GameSprite

class Background(GameSprite):

    """游戏背景精灵"""
    def update(self):
        # 1.调用父类的方法实现
        super().update()

        # 2.判断是否移除屏幕,如果移出
        if self.rect.y >= SCREEN_RECT.height:
            self.rect.y = -self.rect.height

2.2 在plane_main.py 中显示背景精灵

  1. 在 __creat_sprites 方法中创建 精灵 和 精灵组
  2. 在__update_sprites 方法中,让精灵组调用 update() 和 draw() 方法

代码示例

    def __creat_sprites(self):

        # 创建背景精灵和精灵组
        bg1 = Background("./images/background.png")
        bg2 = Background("./images/background.png")
        bg2.rect.y = -bg2.rect.height
        self.back_group = pygame.sprite.Group(bg1, bg2)

2.3 利用初始化方法,简化背景精灵创建

初始化方法:

  • 直接指定 背景图片
  • is_alt 判断是否是另一张图像:False 表示第一张图像需要与屏幕重叠;True 表示另一张图像,在屏幕上方

在 plane_sprites.py 中实现 Background 的初始化方法

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值