Python学习之路11-武装飞船

本章主要学习如何使用编写一个简单的小飞机打外星人的游戏,由于本人对用写游戏并不是特别感兴趣,所以主要是看代码的构建和一些编程规范,代码会有所简略。③第9行代码执行游戏的初始化工作,比如初始化游戏背景等;⑦代码第21行用于更新飞船的信息,如飞

本系列是对入门书籍《编程:从入门到实践》的笔记整理,属于初级内容。标题顺序采用书中标题。

本章主要学习如何使用编写一个简单的小飞机打外星人的游戏,由于本人对用写游戏并不是特别感兴趣,所以主要是看代码的构建和一些编程规范,代码会有所简略。

准备工作

标准库中并没有自带模块,所以需要自行安装,可以在控制台(下是cmd)上使用命令行安装:pip 。如果你是用的,也可以在设置中安装:

点击右边的加号,在弹出的窗口中输入,然后安装即可。

该项目中需要使用一些书中的图片,这些图片都可以在 中下载到。

游戏基本内容

首先需要新建一个项目,笔者取名为“”,并在该项目的根目录下新建一个文件夹,用于存放项目中用到的图片。在本节中,我们将先创建4个文件:

.py:游戏主程序

.py:游戏的配置文件

.py:存放游戏的控制函数,比如响应鼠标、键盘等

ship.py:飞船

.py模块:

该模块经过重构后的代码如下:

①代码第1行导入模块,它包含开发游戏所需的基本功能;

②代码3到5行导入的是自行编写且经过重构的模块;

③第9行代码执行游戏的初始化工作,比如初始化游戏背景等;

④第10行实例化一个游戏配置类,用于配置游戏参数,该类的具体实现见本篇后面的内容;

⑤代码第12-13行用于生成一个名为的显示窗口,长宽从配置对象中读出;.()返回的是一个,在中,是屏幕的一部分,用于显示游戏元素,这里的表示的是整个游戏窗口。我们激活游戏的循环后,每经过一次循环都将重绘这个。

⑥代码第20行的()函数用于响应游戏中发生的时间,比如鼠标,键盘,关闭窗口等。

⑦代码第21行用于更新飞船的信息,如飞船位置

⑧最后一行用于启动游戏,即初始化游戏,并开始主循环。

.py模块

该文件主要是游戏的配置信息,存放游戏的各种参数。

这里故意将飞船的速度设置为浮点数,也可以是整数。在设置游戏元素的位置时有了游戏源码怎么安装,如果直接使用浮点数,则只会截取整数部分。

ship.py模块

该模块描述了一个飞船类的基本内容:

①()中的self.属性,代码将self.rect.即飞船的中心x坐标转换成浮点数,并将其存储在self.中。之所以转换成浮点数,是因为在.py文件中,我们将飞船移动速度设置成了浮点数。

②self.和self.标志,用于表示飞船是否正在移动,用于实现飞船在不松开按键下连续移动。

Python学习之路11-武装飞船

③()方法,用于增减飞船的中心位置x坐标(因为飞船只能在底部移动,所以不用改y坐标),并防止飞船移动出游戏窗口。

④重写了()函数,用于绘制飞船

.py模块

该模块主要是集中处理游戏中发生的各种事件。

①在中,用,表示方向按键,其实键盘上每个键在中都有所对于,以K_开头。()函数和()函数都是对下面的()的进一步简化,这两个函数的代码均可以放在()中,但这样代码将会很臃肿,结构不清晰。

②()函数用于监听游戏的事件,比如.QUIT,它表示游戏推出事件;.和.KEYUP分别表示键盘按下与松开事件。本次大循环中(外层的while循环)发生的所有事件都存储在.event中,我们使用get()方法获得这些事件。

③在()函数中,我们使用的fill()方法填充窗体的背景色,调用()方法来在窗体中绘制飞船,最后,调用..flip()方法让最近的绘制在窗体中可见。

运行游戏

现在我们运行.py文件,我们将得到如下窗体:

目前功能还比较简单,只能实现飞船的左右移动。

添加射击功能

为了添加射击功能,需要先添加一个子弹类。

.py

首先我们需要导入模块以及其中的类(直译的话叫做“精灵类”,然而这名字叫的真的很尴尬),它可以让我们在后面方便批量处理相同类型的同一操作,子弹类继承自类。该子弹类并没有使用图片,而是直接在上绘制矩形用于表示子弹。()方法用于更新子弹的位置。.draw.rect()用于在上绘制子弹。

修改.py

在该模块中添加子弹类的参数:

修改.py

游戏中我们按空格键发射子弹,并发射子弹的过程单独写在一个函数()中。为了响应空格键,需要修改()函数和()函数,前者只修改了参数,后者在判断结构中添加了一个判断。有了子弹类,那我们还需要在中绘制子弹,所以还需要修改()函数,而子弹自身信息(比如子弹的移动)的修改则放在了一个新的函数()中。

当子弹从窗口中消失时,它并没有从内存中消失,如果对于已经从屏幕中消失的子弹不做处理的话,时间一长,子弹数一多,光子弹一项的内存占用就会越来越多(土豪请忽略),虽然只是线性增长,但作为一个合格的程序员,应该避免这种无谓的浪费。

修改.py

最后,我们修改主程序有了游戏源码怎么安装,在其中添加一个.中的Group对象用于表示子弹集合,以及对该对象的操作代码。

运行新代码

以下是运行截图:

小结

自此,我们创建了一个能开火的小飞机,在下一篇文章中我们将向其中添加外星人。

本篇中的代码都是经过了重构后的代码,但是,当我们自己在编程时,如果对某一框架还是小白,搞不清楚该如何组织代码,那就把所有代码都写在一个或几个文件里(虽然这种习惯很不好),也暂时不用考虑代码结构之类的问题,因为你的任务是造东西,而不是写漂亮代码,用精巧结构,用别人没看过的语法。两者能兼备当然更好,但每个人都有当小白的时期,有一定熟练度后,再来考虑代码重构的问题。

本文到此结束,希望对大家有所帮助。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/93394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

软文友链广告合作联系站长qq81118366