2021级C语言大作业 - 霓虹深渊
分享21级同学大一上学期用C语言(及少量C++)实现的霓虹深渊游戏。由于同学们刚学了三个月的编程,实现还不够完善,工程代码、图片音乐素材可以从百度网盘下载:
链接:https://pan.baidu.com/s/15Q7iRz1bOV3w-I0b6m7jKQ
提取码:afu0
一、设计思路
本游戏是一款强调道具叠加效果的横板地牢游戏,玩家将在混合着古希腊建筑和现代霓虹灯光元素的地牢中冒险闯关,挑战穷凶极恶的怪物,向地牢最深处行进,并在此过程中一点点变强。
本游戏参考了网络上的同名游戏,并通过C++和easyx插件编写实现,力求最大程度还原原游戏特色。本游戏复原了原游戏中部分功能,玩家可通过操作键盘来实现对角色的控制,通过鼠标来实现枪械的瞄准和发射功能,并随机生成了每个房间的构造、道具和掉落品,让游戏更具随机性趣味性和挑战性。
本游戏还实现了对原游戏的优化,实现了在线保存数据的功能,在此基础上实现了原游戏没有“排行榜”功能,能让玩家和朋友一起体会游戏的乐趣。
二、功能描述
游戏中各元素主要是通过面向对象来实现。
2.1 各元素的定义
利用继承的设计思想,我们将游戏大致设计为如下几个类,其中上下层具有继承关系:
整个游戏中的所有元素均以类的方式实现,基类共五类:实体类,地图类,房间类,玩家数据类,游戏设置类,其中最重要的是实体类,它是游戏主干内容中不可或缺的一个类。
实体类的元素可以分为四类:子弹类(主角),生物类(怪物,玩家等),掉落物类,箱子类和方块类。其中生物类中的怪物又细分为各种怪物。掉落物类细分为各种道具。这个从实体细分的过程通过类的继承来实现。每个类中又具有独特的函数来实现各种功能。
其中,最为主干的是实体类,游戏过程中的元素都被看做了实体,实体类记录了实体的坐标和大小等基本信息,我们尝试抽象出各种概念中相同的部分,建立了相对合理的类的关系:
2.2 初始化函数
初始化函数为Init()函数,实现了对角色信息的初始化,导入游戏图片和音乐等功能。
2.3 绘图函数
绘图函数为show()函数,主要是将游戏中的个元素画出来,主要细分为画角色,画怪物,画房间内道具等。每个元素的绘制又有相应的类中的专门的绘制函数来实现绘制功能,以此能够条理清晰的完成show()函数的功能。
2.4 碰撞功能
与墙的碰撞功能可以限制角色和怪物的活动范围,并为角色提供落脚点,让玩家有更多的策略。该功能的实现是看移动后两个元素是否在二维平面上有交集,有交集则取消移动。
与子弹的碰撞是通过子弹移动后是否会与元素有交集,有交集则删除该子弹兵让相应的元素扣除血量。
同时当怪物与角色碰转的时候也会扣除角色血量。
2.5 获得强化
为了还原原游戏中角色在冒险中不断变强的特性,在角色消灭完一个房间内的所有怪物后,玩家将获得随机的强化。该功能通过对房间内怪物数量的记录来判断角色是否能获得强化,通过随机函数来获得强化类型。强化类型分为提升血量,提高射速等。
2.6 游戏通关
严格来说本游戏是无尽冒险游戏,当当玩家将所有房间里的怪物消灭之后,角色将会被传送进下一层进行新一轮的冒险,玩家的游戏目的在于通关更多层。
2.7 游戏失败
当角色的血量等于0时系统会判断玩家失败。失败后系统会记录玩家消灭的怪物数量等信息计算玩家得分并上传至排行榜。失败后玩家可选择退出游戏或者重新开始冒险。
2.8 排行榜功能
我们这次大胆尝试了使用网络文件和新的函数,运用php和mysql的部分知识,借助服务器在云端保存榜单,记录了不同玩家总击杀数和最高单轮击杀等信息,实现了排行榜的功能。
三、体会与总结
这次的期末大作业耗时一个月左右,从最开始的基本游戏运行框架开始做起,先实现了角色的移动,然后不断引入墙、怪物、道具等元素,让游戏具有可玩性。
本次大作业完成后的代码较长(近2000行),实现难度较大,我们在实现过程中锻炼了我们的耐心和思考能力,得到了多方面的提升。
本次大作业深入了解并多次尝试使用了面向对象的编程,在最开始的时候因为对类的使用不熟练出现了很多的错误,后来在团队协作的学习中对类的使用越来越熟练,简化了很多的操作步骤,规避了很多问题,在解决问题的过程中团队的代码能力不断得到提升。
除了代码上的收获,我们也积累了团队合作的经验,促进了团队成员之间的交流,加深了队员之间的友谊。
尽管我们收获颇丰,但仍需认识到我们的代码规范和处理问题的思维方式仍有很大的提升空间,希望我们可以再接再厉,继续耐心打磨自己的能力,写出更加高效而优美的代码。
在最后,特别感谢童晶老师的指导和帮助,在很多方面给予了我们启发,让我们在程序的构建上更加成熟。
2021级C语言大作业 - 霓虹深渊相关推荐
- 2021级C语言大作业 - 涂鸦跳跃
分享21级同学大一上学期用C语言(及少量C++)实现的涂鸦跳跃游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.baidu. ...
- 2021级C语言大作业 - 消灭星星
分享21级同学大一上学期用C语言(及少量C++)实现的消灭星星游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.baidu. ...
- 2021级C语言大作业 - 小鸡弹跳
分享21级同学大一上学期用C语言(及少量C++)实现的小鸡弹跳游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.baidu. ...
- 2021级C语言大作业 - 合成一个大西瓜
分享21级同学大一上学期用C语言(及少量C++)实现的合成一个大西瓜游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.bai ...
- 2021级C语言大作业 - 坏蛋冰淇凌
分享21级同学大一上学期用C语言(及少量C++)实现的坏蛋冰淇凌.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.baidu.c ...
- 2021级C语言大作业 - 一笔画
分享21级同学大一上学期用C语言(及少量C++)实现的一笔画游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https://pan.baidu.c ...
- 2010C语言添加背景图片_2019级C语言大作业 - 火柴人试炼之地
C语言大作业 - 火柴人试炼之地https://www.zhihu.com/video/1200491618794606592 分享19级同学大一上学期用C语言实现的火柴人试炼之地.分步骤代码.图片音 ...
- 2020级C语言大作业 - 王国保卫战
王国保卫战 C语言大作业 分享20级同学大一上学期用C语言(及少量C++)实现的王国保卫战.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:https: ...
- 2020级C语言大作业 - 丛林大作战
丛林大作战_C语言大作业 分享20级同学大一上学期用C语言(及少量C++)实现的丛林大作战游戏.由于同学们刚学了三个月的编程,实现还不够完善,工程代码.图片音乐素材可以从百度网盘下载: 链接:http ...
最新文章
- TIDB报错statement count 5001 exceeds the transaction limitation, autocommit = false问题解决
- android程序数据迁移sd,如何迁移安卓手机及SD卡的数据?方法很简单!
- 如何创建一个Mybatis程序,实现对数据库的简单查询?
- matlab repmat 函数的使用
- 课堂随笔01--进制转换
- 2016.5.10(编写Java无脚本的JSP页面)
- 从零基础入门Tensorflow2.0 ----八、43. 自定义流程分布式
- 2021海口高考调研成绩查询,2021海口市地区高考成绩排名查询,海口市高考各高中成绩喜报榜单...
- win10文件夹加密_文件隐私保护工具文件夹隐藏精灵
- java 吸血鬼数字(四位数)
- oracle rsm 进程,Oracle 10g 的后台进程
- 题目 1224: 整除的尾数
- 如何修改PyCharm窗口背景颜色?
- 基于滴滴云搭 SeaweedFS 存储系统
- Modbus通讯协议(一)——测试工具ModbusPoll和ModbusSlave
- c++ 向上取整为8的倍数,或者2^x的倍数
- Codeforces 605E :Intergalaxy Trips
- 什么是语义网络知识表示?给出这种表示方法的优缺点?
- 关于Altium Designer如何在PCB中精准绘制板框以及精准定位问题
- Java项目源码javaweb花店销售管理系统