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

目标

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

01.明确主程序

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

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

PlaneGame

screen

clock

精灵组或精灵

init(self):

__create_sprites(self):

start_game(self):

__event_handler(self):

__check_collide(self):

__update_sprites(self):

__game_over():

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

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

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

  • 封装 主游戏类

  • 创建 游戏对象
  • 启动游戏

  • plane_sprites

  • 封装游戏中 所有 需要使用的精灵子类

  • 提供游戏的相关工具

游戏背景

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

1.1实现思路分析

Python基础学习之飞机大战游戏类框架搭建
  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()方法:

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

  • 显示精灵的基本实现

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 的初始化方法

Original: https://blog.csdn.net/qq_42539712/article/details/116188908
Author: For_Dream_To_Come
Title: Python基础学习之飞机大战游戏类框架搭建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/783840/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 自动化测试框架Pytest(五) —— 接口关联数据

    面试接口自动化问得最多的一个问题:涉及到关联接口如何去实现。 当然是把关联接口需要的数据提取出来啊! jmeter可以用json提取器或者正则表达式去提取,学习pytest我们就自…

    Python 2023年9月11日
    072
  • 实验三 利用flask框架和Echarts实现电影榜单可视化

    回答1: 使用 和MySQL来 ,可以通过以下步骤来 : 1. 使用 来搭建Web应用程序,根据需要设置路由和视图函数。 2. 使用MySQL 来存储数据,建立需要的数据表,并通过…

    Python 2023年8月9日
    039
  • 后台开发经验总结

    1、数据库的时间记录方式,最好采用时间戳的方式,方便对数据采取时间先后和日期限制的设置。 2、所有参数能让前端传递的,尽量不要从数据库中读取,尽量减少不必要的数据库查询读写操作。 …

    Python 2023年6月9日
    053
  • Docker本地封装+部署到服务器流程

    写这篇文章主要是为了证明自己学会了Docker本地封装+部署到服务器的行为。 本文以下面配置进行说明: 环境:Ubuntu 软件:Django2.2.4 语言:Python3 do…

    Python 2023年8月6日
    083
  • dns 设置

    在CentOS 7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了。和CentOS 6下的设置DNS方法不同,有几种方式: 1、使…

    Python 2023年6月10日
    075
  • 玩转 Scrapy 框架 (二):Scrapy 架构、Request和Response介绍

    目录 一、Scrapy 架构及目录源码分析 二、Request 和 Response 介绍 * 2.1 Request 2.2 Response 三、实例演示 * 3.1 POST…

    Python 2023年10月3日
    046
  • fpm工具来制作rpm包软件

    第 1 章 rpm 包的制作 1.1 fpm 的概念介绍 FPM 功能简单说就是将一种类型的包转换成另一种类型 1.1.1.支持的源类型 类型 说明 dir 将目录打包成所需要的类…

    Python 2023年6月10日
    097
  • IBM SPSS Statistics描述性统计分析使用教学

    本文主要将从描述性统计的定义、描述性统计的应用场景、怎么进行描述性统计三个方面来介绍描述性统计。 首先描述性统计是用来计算变量之间的差异,一般用平均值、方差、标准差这些数学公式来计…

    Python 2023年8月8日
    048
  • 你是否还记得有一款游戏叫做“魔塔”?

    目录 前言 正文 游戏介绍: 游戏开发制作流程 1.收集素材 2.创建攻击函数 2.1 定义两个对象(主角和怪物) 2.2 函数输出为【0】表示打不过,胜利输出受损生命值,设置 c…

    Python 2023年11月6日
    046
  • python-requests+pytest+allure实现读取csv文件及excel文件

    python-requests+pytest+allure实现读取csv文件及excel文件 一.流程 二.包含模块 三.读取csv文件 * – + 1.创建csv文件…

    Python 2023年9月12日
    070
  • 第5章 pandas入门

    整述:pandas是有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具⼀同使用,如数值计算工具NumPy和SciPy,分析库statsmodels…

    Python 2023年8月16日
    054
  • python小技巧

    01将字符串倒转 02将英文单词的首字母大写通过title()方法来实现首字母的大写 03给字符串去重 04拆分字符串 05将字典中的字符串连词成串 06查看列表中各元素出现的个数…

    Python 2023年5月23日
    063
  • Lua 支持虚函数的解决方案

    概述 2023-02 据实际开发情况,对原来的方案优化,放在了后面 lua的__index元方法本身没有提供类似C++虚函数机制,调用的父类方法调用虚函数可能会出现问题。 问题分析…

    Python 2023年10月22日
    037
  • MNN简介

    一、轻量级高性能推理引擎 1.简介 MNN 是一个高效、轻量的深度学习框架。它支持深度模型推理与训练,尤其在端侧的推理与训练性能在业界处于领先地位。目前,MNN 已经在阿里巴巴的手…

    Python 2023年9月15日
    088
  • pandas 数据整理(转置)

    学习目标 掌握melt函数整理数据的方法 掌握stack、unstack的用法 掌握wide_to_long函数的用法 1 melt整理数据 加载美国收入与宗教信仰数据 impor…

    Python 2023年8月8日
    041
  • Conda虚拟环境用conda和pip安装软件包的路径问题

    pip安装路径。参考博客ubunt18.04中pip安装的包和虚拟环境中pip安装的包各自在哪里 一:正式环境中 1. pip pip3 安装的包在下面路径(pip指向了pytho…

    Python 2023年8月1日
    0275
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球