上海松江做网站多少钱,wordpress自定义内容管理,源码搭建网站流程,什么网站的页面好看前言 多年前#xff0c;你我在一起打飞机。为了实现真正的打飞机#xff0c;在下一年前踏足帝都学习了无所不能的Python#xff0c;辣么接下来带你在俩个小时用200行代码学会打飞机。 python中提供了一个pygame的模块能够让我们快速编写一个游戏。接下来#x…前言 多年前你我在一起打飞机。为了实现真正的打飞机在下一年前踏足帝都学习了无所不能的Python辣么接下来带你在俩个小时用200行代码学会打飞机。 python中提供了一个pygame的模块能够让我们快速编写一个游戏。接下来简要创建一个目录结构存放代码(规范的目录结构可以让代码保持高度的灵活性及可读性)如下
PlayPlane/
|-- bin/
| |-- main.py 程序运行主体程序
|-- config/
| |-- settings.py 程序配置(例如: 游戏背景音乐的加载等)
|-- material 程序素材放置(打飞机游戏素材放置)|-- ...
|-- src/ 程序主体模块存放
| |-- __init__.py
| |-- bullet.py 我方飞机发射子弹实现代码存放
| |-- enemy.py 敌方飞机实现代码存放
| |-- plane.py 我方飞机实现代码存放
|-- manage.py 程序启动文件
|-- README.md 打飞机啦 一、首先在 config/settings.py 中进行以下功能的实现 游戏素材滑动到文章底部点击链接即可下载 游戏初始化游戏混音器初始化背景音乐初始化我方飞机挂了音乐敌方飞机挂了音乐子弹发射音乐 config/settings.py 二、小试牛刀 飞机和子弹都是可移动的那么怎么实现让它们动起来呢我方飞机可以玩家进行操控敌机就是随机性的出现子弹暂由我方飞机发射。 在Pygame中所有移动对象都可看做是一个精灵sprite精灵之间能够进行相互的交互通信例如如何让碰撞检测更加精准等等。 那么先让我们先在屏幕上制作一个游戏板根据 settings.py 配置并让它有声音播放首先我们在 bin/main.py 中这么写 我们可以直接运行它那么我们会看到以下画面并且还会有激情的声音吆但是我们要将文件配置为绝对路径才可以运行因为刚刚在settings中的加载的音乐文件为相对路径。 DEMO 接下来呢我们将要制作我方飞机敌方飞机和子弹如何让它们展示在游戏画板上继而让它们变得可移动起来请看代码实现方案... 从游戏画板上添加飞机首先我们应怎样在屏幕上输出飞机 上述讲过pygame中的 sprite精灵可使一张图片或者一个静态物体动起来那么制作飞机需要考虑并做些什么呢 飞机的初始位置通过按键 上下左右 来调控飞机的位置移动飞机只能呆在制作的游戏画板中飞机的速度飞机死亡的加载设定一个状态标识飞机的存活让飞机具有动态的喷气式效果那么如何实现以上的功能呢接下来结合上述的示例代码我们先将我方飞机绘制到画板上方并且我们通过按键 J 判定我方飞机的存活状态为死亡绘制飞机的死亡画面并重置飞机 创建飞机在pygame中, 所有可移动的对象均叫可看作一个精灵(sprite)该类并实现了碰撞方法 spritecollide我方飞机和敌方飞机指定掩膜属性以及生存状态标志位 添加 self.mask 属性(可以实现更精准的碰撞效果)
# 倒入精灵模块, 使飞机可以动起来
import pygameclass OurPlane(pygame.sprite.Sprite):def __init__(self, bg_size):super(OurPlane, self).__init__()# 确定我方飞机背景图(有俩张可以让它们不停的切换形成动态效果)self.image_one pygame.image.load(material/image/hero1.png)self.image_two pygame.image.load(material/image/hero2.png)# 获取我方飞机的位置self.rect self.image_one.get_rect()# 本地化背景图片的尺寸self.width, self.height bg_size[0], bg_size[1]# 获取飞机图像的掩膜用以更加精确的碰撞检测self.mask pygame.mask.from_surface(self.image_one)# 定义飞机初始化位置底部预留60像素self.rect.left, self.rect.top (self.width - self.rect.width) // 2, (self.height - self.rect.height - 60)# 设置飞机移动速度self.speed 10# 设置飞机存活状态(True为存活, False为死亡)self.active True# 加载飞机损毁图片self.destroy_images []self.destroy_images.extend([pygame.image.load(material/image/hero_blowup_n1.png),pygame.image.load(material/image/hero_blowup_n2.png),pygame.image.load(material/image/hero_blowup_n3.png),pygame.image.load(material/image/hero_blowup_n4.png)])def move_up(self):飞机向上移动的操作函数其余移动函数方法类似if self.rect.top 0: # 如果飞机尚未移动出背景区域self.rect.top - self.speedelse: # 若即将移动出背景区域则及时纠正为背景边缘位置self.rect.top 0def move_down(self):飞机向下移动if self.rect.bottom self.height - 60:self.rect.top self.speedelse:self.rect.bottom self.height - 60def move_left(self):飞机向左移动if self.rect.left 0:self.rect.left - self.speedelse:self.rect.left 0def move_right(self):飞机向右移动if self.rect.right self.width:self.rect.right self.speedelse:self.rect.right self.widthdef reset(self):# 初始化飞机(飞机挂了, 初始化到初始位置)self.rect.left, self.rect.top (self.width - self.rect.width) // 2, (self.height - self.rect.height - 60)# 重置飞机的存活状态self.active True 上面的代码写了一个 我们的飞机 OurPlane 类它初始化了一些属性以及 上下左右 移动的方法和重置方法接下来将要运用它展示到游戏画板上面 由于飞机是一直存在的接下我们主程序 main 下面的死循环中这样写 1.在屏幕上绘制飞机 2.让飞机上下左右动起来 3.按键为 j 绘制飞机的死亡状态 那么上述的功能都已经实现了接下来就开始真正的打飞机 三、接下来可以制作我方飞机敌方战机子弹等这些功能均在 src/ 目录下实现 我方飞机根据按键上下左右进行移动初始化位置喷气式图片加载切换及重置效果等 src/plane.py 敌方飞机随机移动出现及重置(制作出我方飞机之后敌机和子弹其实都是大同小异的) src/enemy.py 子弹按照我方飞机正中上方发射及频率调控重置 src/bullet.py 在上面的内容中使用面向对象的形式制作了游戏中可移动的对象并继承 pygame.sprite.Sprite 四、继而在 bin/main.py 中进行主体功能的实现 初始化背景图及大小我方飞机移动及发射子弹敌方飞机移动我方飞机和敌方飞机碰撞检测键盘按键监测效果我方飞机和敌方飞机挂了效果绘制 bin/main.py 五、畅汗淋漓一气呵成打飞机 组合一下running起来 from bin.main import mainif __name__ __main__:环境: python3 pygamerunning 起来就可以打飞机了O(∩_∩)O~.main() 原文来自:https://www.cnblogs.com/leguan1314/p/7927595.html github下载:https://github.com/1352282824shy/-Lightning-Fighter-Game 转载于:https://www.cnblogs.com/shanghongyun/p/10541727.html