Python项目实战之《飞机大战游戏》

article/2025/4/21 10:34:57

目录

一、Pygame库包简介

二、Pygame安装

三、项目开发思路

3.1前言

3.2飞机大战开发步骤


一、Pygame库包简介

Pygame是一个基于python的游戏开发库,它提供一系列的工具和接口,使开发人员能够轻松的创建各种类型的游戏,包括2D游戏和简单的3D游戏。说白了就是一个目录包,里面包含了许多已定义好的函数模块和属性。

二、Pygame安装

Windows为例:

 #pygame库中模块使用教程:https://www.pygame.org/docs

 

 

三、项目开发思路

3.1前言

__name__属性

我知道一个项目中可能有多个"*.py"的文件,每个“*.py"文件中都定义了许多功能函数来作为模块文件来使用。模块文件创建好后,开发者为了测试模块中定义的功能函数是否可以使用,一般都会在模块文件中调用一下自己写的函数方法。这样当程序主"*.py"文件要使用模块中的某个函数时,就需要将相应模块文件导入到启动"*.py"文件中(导入模块相当于将模块文件中的代码复制到本“*.py”导入位置处);这样就导致当调用模块中的某函数时、模块文件中已写调用函数的代码也会执行。因此,为了避免这种事情我们可以在调用函数之前在模块文件中,函数调用处添加一个"__name__="__main__"的判断。

1、当“*.py”文件作为启动文件时,其文件中__name__的值为“__main__"

2、当“*.py" 文件作为模块导入到”*.py"启动文件时,模块中的__name__属性值就等于其模块的文件名,而本启动文件中的__name__的值为“__main__"。

总结:__name__="__main__"所在的.py文件如果作为模块被导入时,其文件中的__name__值就等于模块文件名。 但如果直接在本地文件运行,__name__的值就为"__main__"。

3.2飞机大战开发步骤

说明:《飞机大战游戏》源代码资源包已上传到本文章顶部,欢迎下载测试!

一、创建游戏窗口

        1、设置窗口大小

        2、设置窗口标题

        3、设置窗口图标

二、添加音效

        1、游戏背景音效

        2、敌人飞机被击中爆炸音效

三、定义敌人和子弹列表,用来保存对应的实例对象

四、循环创建敌人实例对象

五、定义勾股定理距离函数

六、定义得分字体显示函数

七、定义游戏结束标语显示和对象清除函数

八、定义保存子弹和敌人实例对象的列表

九、while一直循环

*我们看到的游戏画面动态变化效果,其实和视频播放原理类似,都是由一张张前后相关联的图片、轮流显示在屏幕上。用户通过肉眼看屏幕时,由于屏幕上前后图片轮播速度快,因此给用户一种动态变化的视频感觉;其实用户看到的动态视频都是由一张张图片轮播展现出来的动态效果。因此在游戏中可以使用循环来展现游戏物种的实时位置变化实现动态视觉效果。

        1、画出背景图

        2、玩家键盘或鼠标事件监测

                ●玩家按不同的键,玩家飞机相应位置也随之变化

                ●玩家按空格键发射子弹即创建子弹实例对象

        3、显示玩家位置

                ●定义并创建玩家飞机类和实例对象

                ●定义实例属性: 玩家飞机x,y轴图片初始位置。

                                          定义玩家移动速度即坐标变化值变量

                                          加载玩家飞机图片

               ● 定义玩家移动边界控制方法(只能在指定x轴水平范围内移动)

        4、显示敌人

                ●定义敌人类

                ●实例属性:随机定义敌人图片初始坐标x、y值

                                    定义敌人移动速度变量

                                    加载敌人图片

                ●定义敌人移动方法:默认水平移动,超过左右边界反向移动并朝玩家前进一步。当走到屏幕底部时或被子弹射中则重新随机初始化敌人位置给玩家一种敌人源源不断的错觉。

        5、显示玩家子弹

                ●定义子弹类

                ●定义子弹类实例属性: 子弹初始位置坐标(总是在玩家飞机头上面一点)

                                                       子弹移动速度

                                                       加载子弹图片

                ●定义子弹射中敌人方法: 定义勾股定理函数测量子弹和飞机之间的距离;如果两者距离在某个范围内则表示击中敌人---->子弹和敌人消失(敌人击中爆炸音效)---->删除列表中子弹对象、重置敌人飞机位置。

               ●定义子弹移动方法: 每循环一次子弹向上移动一次;如果子弹到达窗口顶部则消失。

        6、显示玩家得分

                ●在循环外: 分数变量累加+1;初始化字体函数;设置字体及其字号。

                ●定义得分字体显示函数: 定义字体内容变量;通过字体变量熏染装饰字体(颜色);显示得分字体。

        7、显示游戏结束

                ●调用游戏结束函数(玩家飞机和敌人飞机相撞游戏结束--->清理掉所有对象---->显示游戏结束标语)

        8、更新窗口内容(每循环一轮,将本轮的各对象位置变化显示在背景图上)

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!


http://chatgpt.dhexx.cn/article/yth9bUJD.shtml

相关文章

Java调用Python语言及第三方Python库

#pic_center 400x 系列文章&#xff1a; 文章目录 1、导入依赖 <!--Python&Java--><dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.2</version></dependency>…

Python 代码托管到码云平台,原来这么简单

什么是代码托管&#xff1f;代码托管又有什么好处&#xff1f; 场景1&#xff1a;我有2个电脑&#xff0c;公司一台&#xff0c;家里一台。我想在两台电脑上都进行同步开发。这时候我只要git push/pull一下就能够同步了&#xff0c;不再需要用U盘拷来拷去 场景2&#xff1a;我…

Python游戏开发-超级海盗!!!

开发环境配置 安装python环境后&#xff0c;下载pygame模块&#xff0c;使用如下命令 pip install pygame 注&#xff1a;该项目使用了一些新特性&#xff0c;使用3.10以上的版本 游戏项目介绍 游戏分为两个模块&#xff0c;分别是编辑模块和关卡模块&#xff0c;在编辑模…

chatgpt赋能python:Python编译成Java字节码:一个全新的可能性

Python编译成Java字节码&#xff1a;一个全新的可能性 Python作为一种高级编程语言&#xff0c;有其独特的优点和特点&#xff0c;被广泛应用于各个领域。然而&#xff0c;随着Python在企业级应用中的广泛应用&#xff0c;性能和安全等方面的问题也越来越凸显出来。这时&#…

鲲鹏法(一)python环境搭建

简单总结一下python的开发环境&#xff08;偏科学计算一些&#xff09;&#xff0c;Pycharm等之后再补了 python环境搭建 一.Python二.IPython三.Jupyter1.Jupyder QtConsole(了解即可)2.Jupyder Notebook3.Jupyder Lab4.单元类型5.编辑单元6.Markdown单元7.输出显示8.nbconver…

【预测模型-ELM预测】基于原子搜索算法优化极限学习机预测matlab代码

​1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于原子搜索算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多,训练过程中容易产生过拟合现象.该方法运用原子搜索算法对极限…

ELMo模型解读

在反复的看了ELMo源码和参考网上各路大神的经验之后&#xff0c;终于对ELMo的架构有了比较清楚的认识。总结一下自己对ELMo的理解&#xff0c;其实还有很多细节没有搞清楚。 一.模型架构 下面是我画的一个架构简图&#xff0c;对于ELMo不管你输入的是词还是字符&#xff0c;它…

【预测模型】基于粒子群算法PSO优化极限学习机ELM实现数据预测matlab源码

1 模型 为了提高空气质量预测精度,提出一种基于粒子群算法优化极限学习机的空气质量预测模型.运用粒子群算法优化极限学习机的初始权值和偏置,在保证预测误差最小的情况下实现空气质量最优预测.选择平均绝对百分比误差,均方根误差和平均绝对误差作为评价指标,通过PSO-ELM和ELM…

多元分类预测 | Matlab麻雀算法(SSA)优化极限学习机(ELM)的分类预测,多特征输入模型。SSA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 麻雀算法(SSA)优化极限学习机(ELM)的分类预测,多特征输入模型。SSA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出分类效果图,迭代…

多元分类预测 | Matlab粒子群算法(PSO)优化极限学习机(ELM)的分类预测,多特征输入模型。PSO-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab粒子群算法(PSO)优化极限学习机(ELM)的分类预测,多特征输入模型。PSO-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,…

【预测模型-ELM分类】基于极限学习机ELM+OSELM+KELM+半监督SSELM+USELM实现数据集分类附matlab代码

1 内容介绍 极限学习机是由黄广斌等&#xff3b;13&#xff3d;提出的一种针对前馈神经网络设计的机器学习算法。该算法结构简单、计算速率快。ELM的关键在于找到输出和输出之间的映射空间。首先确定隐含层之间的连接权值w和隐含层神经元的偏置b。选择一个无限可微的函数作为隐…

多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…

【ELM数据预测】基于matlab粒子群算法优化ELM数据预测(含前后对比)【含Matlab源码 449期】

✅博主简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;Matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;海神之光 &#x1f3c6;代码获取方式&#xff1a; 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭&#xff1a;…

elmo模型详解

elmo模型结构 如下所示是elmo模型结构图&#xff1a; 在输入中可以采用worc2vec模型 训练的词向量。 其实总的来说&#xff0c;elmo模型就是若干bilstm的堆积&#xff0c;然后训练得到的&#xff0c; 对于某一个单词[公式]&#xff0c;一个L层的双向语言模型biLM由2L1个向量表…

多元分类预测 | Matlab灰狼算法(GWO)优化极限学习机(ELM)的分类预测,多特征输入模型。GWO-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | 灰狼算法(GWO)优化极限学习机(ELM)的分类预测,多特征输入模型。GWO-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出…

ELMo模型简介

word2vec是一种静态词嵌入方法&#xff0c;它不会随着上下文场景的变化而变化。但一词多义在现实中太常见了&#xff0c;因此这种静态嵌入的局限性在很多场景显得力不从心。而ELMo就是为解决这些问题提出的&#xff0c;它的提出意味着从词嵌入(Word Embedding)时代进入了语境词…

【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1722期】

✅博主简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;Matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;海神之光 &#x1f3c6;代码获取方式&#xff1a; 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭&#xff1a;…

【预测模型】基于 Elm神经网络的电力负荷预测模型matlab源码

1. 算法概述 **\ ELM算法针对的问题是单隐层的前馈神经网络(single-hidden layer feedforward neural networks&#xff0c;SLFNs)&#xff0c;算法特点在于输入层到隐层的权重W和偏差B可以随机设定&#xff0c;隐层激励函数具有无限可微的特征即可(常用的有radial basis、sine…

【预测模型-ElM分类】基于松鼠算法优化ElM神经网络实现数据分类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

模型学习 - ELM

本学弱喜欢在本子上记笔记&#xff0c;但字迹又丑。 望看不懂我的字的大佬不要喷我&#xff0c;看得懂的大佬批评指正。