| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 【日常篇】005_用Python制作《太空大战》 -> 正文阅读 |
|
[游戏开发]【日常篇】005_用Python制作《太空大战》 |
前言??本次的战线十分漫长,大概花费了一个多月共五六次的 第一次迭代目标??相应的图像能够显示在屏幕上 ??按方向键可以向相应的方向移动,触碰到边界时无法继续移动 实现过程??作为最开始的小目标,只需要将玩家的飞机显示在屏幕上,并能够根据按键的响应四处移动即可。由此设计出三个类:玩家(Player)类、游戏场景(Stage)类与图像展示(Display)类。玩家类存储玩家的各种信息,游戏场景类存储游戏的状况,场景中都有哪些事物,而图像展示类则用于将游戏场景类中的情形用图形界面表示出来 ??每一帧刷新的时候,就会处理键盘响应与玩家的移动,同时判断玩家的移动是否合法,如果不合法则无法完成本次移动。这样一来,玩家在场景内移动的规则就设定好了。再由图像展示类将玩家的位置在背景上显示出来,就完成了第一次迭代的目标 第二次迭代目标??按K键发射子弹,且设置子弹发射的最短时间间隔 实现过程??第二次迭代在第一次迭代的基础上引入了子弹发射系统。由此联想到需要新增子弹类(PlayerBullet)以及玩家发射子弹、子弹在场景中更新状态、子弹图像显示的相应方法 ??考虑到后期,玩家的子弹和敌人的子弹会有所区别,故在此设计子弹的基类(BaseBullet),后续制作的敌人的子弹也将会继承自这里 ??对于玩家发射子弹的操作,如何实现最短发射时间间隔的限制?我的解决方案是:给玩家分配最近一次发射时间(lastTimeFired)这一成员 ??因为内容实在是太多了,加上隔了也有一定的时间了,因此后面直接贴出当时的简要记录: 第三次迭代目标??设置1血敌人 ??敌人被命中后直接消失 ??敌人会左右移动,同时不断前进 第四次迭代目标??敌人会发射子弹,且设置发射时间间隔,固定时间发射 ??玩家设置血量,命中玩家后扣除相应血量 ??玩家血条显示 第五次迭代目标??子弹命中后会有爆炸的动画效果 第六次迭代目标??新增敌人种类 双排战士——DoubleWarrior??血量中,一次连排发射两个子弹,径直纵向移动,移动速度低,射击速度中等,防御力中 三线射手——TripleShooter??血量低,一次向三个方向发射子弹,径直纵向移动,移动速度中等,射击速度低 第七次迭代目标??使用外置文件设定敌人的出场模式 ??BOSS战,所有敌机不继续刷新 文件格式??采用json格式:
第八次迭代目标??增加道具掉落 ??击败不同类型敌机时,有不同的概率掉落道具 ??击败BOSS时,掉落多个道具 回血??提升50血量 ??掉落权重10 增加血量上限??提升血量上限25 ??掉落权重2 火力加强??提高射速(每秒的次数+1) ??掉落权重5 攻击加强??攻击力提升2 ??掉落权重2 防御加强??防御力提升1 ??掉落权重2 第九次迭代目标??完善BOSS战 ??BOSS战期间,BOSS血条显示 ??BOSS死亡后,重设时间戳到BOSS出现前,以解决BOSS接连出现的问题 ??在等间隔出场的基础上,设置第一次出场时间 第十次迭代目标??设计更多的BOSS,并不局限于一般的移动模式 冲锋者——Sticker??发射5连并排霰弹,5秒随机横向移动模式+3秒向前突刺模式+2秒复位模式 跟踪者——Tracker??位置上不断接近玩家,子弹对着玩家射 风车——Windmiller??在中心矩形路线移动,并旋转着向四个方向发射子弹 钛战机(Vader)——TieVader??8秒横向移动,2秒追踪玩家 歼星舰——StarDestroyer??本体只能左右移动,但却可以不断地放出普通钛战机对玩家进行攻击 ??本体也能发射爆能束,且攻击力极高 普通钛战机——Tie??斜着飞行,发射爆能束,攻击力中偏高,血量中,速度快,射速高 ??对应地,让玩家也能在后期使用爆能束,增加一项让玩家获得爆能束的道具 死星——DeathStar??最终BOSS,爆能束的发射位置是随机的,并且可以随时放出各种类型的敌机,一次放出1——3架 ??有两种爆能束可以发射,一种是普通的红色,另一种是能够摧毁行星的绿色 第十一次迭代目标提高平衡性??玩家子弹最多能变为三排并发 ??每打完一个BOSS,都会提升敌人的属性: ??攻击+20% ??防御+20% ??血量+20% ??开火间隔时间-15%,下限50 打开碰撞箱快捷键??按b打开碰撞箱 增加分数系统??命中敌人时,按敌人扣血量加分,Game Over时游戏继续,但在命令行显示分数 增加暂停系统??按p键暂停,画面静止 优化界面??在血条左侧显示玩家飞机图标 血量数值显示??按h键开启血量数值显示 最终效果展示??视频展示:http://home.ustc.edu.cn/~caimx/video/SkyWars_Video.mp4 总结??本次代码的编写过程整体还算顺利,基本上每一两个小时都能完成一次迭代。但从逻辑与画面的分离这个方面来讲,还是做的很不好。游戏的逻辑部分应该尽量由逻辑模块实现,而不是交给画面显示模块去做。这一点在后续的扫雷中倒是得到了很大程度的改善 代码链接 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 18:32:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |