【021】Python全栈日记-飞机大战(上)

本次还是分为两个部分,第一部分为pygame模块参数汇总、第二部分我们要做的第一个python实例:游戏飞机大战。

 

飞机大战使用了两种方法,面对过程和面对对象,通过这两种方法,来了解一下java和pythoin作为面对对象编程的优势,和c作为面对过程编程的复杂所在。

 

第一部分 pygame模块参数汇总

 

第一部分我保存在了有道云笔记中,这部分是用于查询一些常用的参数,不必要全部背下来,在需要时可用于查询指令,但是在飞机大战实例中出现的参数还是背下来为好:

pygame模块参数汇总:(http://note.youdao.com/noteshare?id=a3a8a4d2bfd05ec4559ab3bde358d987

 

第二部分 游戏飞机大战(上)

游戏中需要用到的图片素材:

(链接:https://pan.baidu.com/s/1TUC0nwuXIaBYTD2We45DEQ

提取码:uy2h )

 

首先先通过cmd下载一下pygame包

Cmd里输入 pip install pygame 等待安装

 

1、窗口面板设计

我们玩游戏都是在窗口中进行的,所以我们先建一个窗口:

效果:

 

 

2、素材加载

先看一下素材如何用坐标放在程序里:我方飞机居中在最下面,敌方飞机先居中放在最上。

添加背景、飞机、敌机

效果:

 

3、添加事件(让飞机动起来)

(1)事件就是鼠标点击,键盘录入等等

(2)添加后我们只能按一下走一步,如何让一直按着键就能一直移动呢?

在while循环外添加一行代码

这里我们可以把

简化为:

思考一下其中逻辑

 

最后效果如下:

 

 

4、让敌机动起来

我们规定:敌机如果移动到最右边,向左移动,如果移动到最右边,向左移动。

所以我们先在循环外加个敌机的移动标志

然后写敌机移动代码:

效果如下:

 

 

5、子弹代码

子弹需要定义一个类

子弹是从飞机头打出来的,所以子弹的坐标应该是飞机横坐标加上飞机长度的一半再减去子弹宽度的一般,纵坐标是飞机的宽度减去子弹的宽度。

(1)定义一个子弹类:

类一般在开头定义:

 

(2)初始化一个子弹的变量:

(3)然后添加按键,按空格射子弹,实例化子弹对象并调用类方法:

 

(4)让子弹移动:

在类中添加移动方法,并在射出去的时候调用

 

(5)改进子弹

现在已经可以发射子弹了,但是只能发射一发,那如何让他发射多个子弹呢?

定义一个列表,发射一个添加到列表里,这样就可以发射多发了。

那先把之前初始化的子弹换成列表、

把onezd = None 删除改为:

然后修改之前射子弹的内容:

因为用到了copy,所以在开头需要调用copy函数,impore copy’:

 

演示:

 

 

6、敌机子弹

敌机子弹的建立方法和我方飞机的是一样的,注意改变一下子弹的发射位置,我们先从简单的来,先做一个按a键敌方飞机射击。

(1)创建敌方飞机子弹类:

(2)初始化敌方子弹列表

(3)设置发射按键

(4)发射子弹

 

(5)建立好基础了,我们来让敌方飞机自动随机发射子弹,

先把敌方按键发射子弹删除、第(3)步的代码

我们调用随机数import random’

这样敌方自动发射就实现了:

效果:

 

7、我方飞机的喷火效果

飞机的喷火效果其实就是两张图片来回切换,就和gif一个道理

那如何把两张循环的图片放在大的循环中呢?

先加载另一张飞机图

然后定义一个飞机变换的变量

然后在加载飞机素材那里加上一个判断:

效果如下:

 

8、我方飞机的击毁效果

敌方子弹接触到飞机时会发生爆炸,这时候我们就需要算出飞机一些关键位置的坐标,让子弹接触到飞机再击毁,经过大概测量,飞机头长为40,距离边框为36.

(1)先定义机头、机身的大小

 

(2)当我们的飞机被敌方子弹打中后子弹会消失,所以我们可以把这两句话放在敌方子弹那里,并添加子弹的大小,这里引用一个pygame自带的碰撞函数。

效果:

 

(3)我们把爆炸的文字输出替换为游戏里的动态效果

文件夹里发现爆炸一共4张图

我们先初始化爆炸变量,然后把四个爆炸图放在列表中

然后再之前的碰撞代码后加入爆炸变量的改变

最后,实现爆炸效果。

效果:

 

 

9、敌方飞机爆炸

其实和我方的一模一样,改几处就行

(1)先定义敌机的大小

(2)当我们的飞机被敌方子弹打中后子弹会消失,所以我们可以把这两句话放在敌方子弹那里,并添加子弹的大小,这里引用一个pygame自带的碰撞类。

(3)添加爆炸变量的改变 djboom = True

(4)添加爆炸图片,制作动态效果

文件夹里发现爆炸一共4张图

我们先初始化爆炸变量,然后把四个爆炸图放在列表中

最后,实现爆炸效果。

效果:

 

 

这样一个简单的不是你死就是我亡的飞机大战已经做好了,方法就是这些,素材还有很多,剩下的就靠大家尽情发挥了。

 

明天,我们将以面向对象的方法重做这个程序,让大家体会到,面向对象的三大特性:封装、继承、多态究竟应该怎么使用。

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Bootstrap Python是指使用Python编程语言结合Bootstrap前端框架来开发网页或应用程序的技术。Bootstrap是一个广泛使用的前端框架,它提供了一系列的CSS样式和JavaScript插件,可以帮助开发人员快速建立响应式、现代化的网页界面。 使用Python和Bootstrap的组合可以给开发人员带来许多优势。首先,Python是一种功能强大且易学易用的编程语言,具有丰富的工具和库,可以用于处理数据、编写逻辑代码等。这使得开发人员可以方便地处理后台逻辑,并与前端通过API进行交互。 Bootstrap提供了丰富的样式和组件,可以帮助开发人员快速构建用户界面。使用Bootstrap可以轻松实现响应式设计,使网页能够适应不同的屏幕尺寸和设备。此外,Bootstrap还提供了各种组件和插件,如导航栏、表格、模态框等,可以方便地构建各种功能。 Bootstrap Python的开发流程通常是先使用Python编写后端逻辑和API,然后使用Bootstrap来设计和构建前端界面。Python和Bootstrap之间的交互可以通过AJAX等技术来实现。开发人员可以使用Python的框架,如Django或Flask,来简化后端开发,并提供API接口。然后,使用Bootstrap的HTML和CSS代码来构建用户界面,并通过JavaScript和Ajax与后端进行通信。 通过使用Bootstrap Python,开发人员可以更高效地开发现代化的网页和应用程序。Python提供了强大的后台逻辑处理能力,而Bootstrap提供了丰富的前端设计和交互功能。这使得开发人员能够更快地构建功能完善、用户友好的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值