基于Cocos2d-x元气骑士游戏【100010642】
游戏 基于 cocos2d 骑士
2023-09-11 14:17:49 时间
元气骑士项目(面向对象程序设计课程大项目)
项目信息
- 项目进度时间线:
游戏说明
游戏简介
元气骑士是一款地牢类角色扮演游戏,玩家将会在随机关卡中遇到不同的敌人,并且躲避子弹,收集金币,不断获得更强力的武器。
游戏玩法
进入游戏后选择要操作的人物角色,在安全地图挑选武器后进入关卡。游戏全程共有五关,走到最后击败最终 Boss 即可胜利通关。击杀敌人与开启宝箱可以获得武器与金币。不断升级角色,用金币购买更加强力的武器来击败敌人!
基本操作
操作 | 效果 |
---|---|
WASD 或 ↑↓←→ | 移动主角 |
J 或 Z | 攻击键 |
X 或 K | 交互键 |
角色及成长属性
角色 | 生命值 | 蓝量 | 护甲 |
---|---|---|---|
骑士 | 8/9/10/11/12 | 220/240/250/260/270 | 8/9/10/11/12 |
牧师 | 7/8/9/10/11 | 240/260/280/300/320 | 8/9/10/11/12 |
武器
武器 | 类型 | 攻击力 |
---|---|---|
步枪 | 远程 | 3 |
冲锋枪 | 远程 | 2 |
短刀 | 近战 | 3 |
长刀 | 近战 | 10 |
敌人
敌人 | 类型 | 血量 | 攻击力 |
---|---|---|---|
持枪者 | 远程 | 10 | 1 |
持刀者 | 近战 | 10 | 1 |
水晶巨蟹 | Boss | 100 | 1&3 |
画面概览
- 开始界面
- 关卡地图
- Boss 战
项目开发文档
-
选用引擎:Cocos2d-x 3.17.2
-
辅助软件:Tiled Map Editor 1.1.5、Adobe Photoshop CC 2018
-
支持平台:Windows
-
小组分工:
姓名 分工 汪明杰 素材、武器类、子弹类、地刺 李俊杰 怪物类、boss 类、道具类、商店 王立友 buff 与 debuff、地图绘制、特殊地形、小地图 马家昱 UI 界面绘制、金手指、键位选择 -
类的设计及继承关系
评分项目完成度
基础功能
- 游戏开始界、背景乐、量控制、暂停及恢复功能、退出功能
- 键盘控制
- 少 2 类武器,包括不限于枪械类武器、近战武器;每类武器少包括 2 种具体的武器,如枪械类
- 武器包括不限于次发射单发弹的枪械、次发射多发弹枪械等,近战武器包括不限于可快速
攻击的范围武器、攻击速度较慢的范围武器等 - 少 2 种普通敌类型,包括不限于近战型敌和远程型敌;每类普通敌少包括 2 类具体的敌
- 少两种道具,包括不限于恢复命、增加护甲的道具,可以通过击败敌获取
- 宝箱机制,开启可获得新武器或者道具等
- 安全地图与探险地图,安全地图指进关卡前的地图,可以查看武器信息、敌信息等,探险地图指关卡地图
- 关卡中主死亡,探险终并返回安全地图
- 少包括 2 个关卡
可选功能
- 游戏地图,可以显示已经探索过的地图,可以参考元骑的地图
- 多个可选主,每个主拥有不同的属性加成(近战攻击速度提升、枪械弹速度提升、命值增加等)或者主动技能(移速增加、翻滚躲弹)
- buff 机制,主可以获得多种 buff,包括不限于移速增加、敌等
- debuff 机制,主会获得多种 debuff,包括不限于移速减慢等
- 币机制,击败敌可以获取币
- 主等级系统,等级主拥有更强的属性或能,主可以通过消耗币升级(在安全地图中)
- 安全地图中商店系统,可以在进关卡前购买或抽取特殊道具、武器等
- 探险地图中的爷爷系统,可以在关卡中购买/获赠礼物,如武器/道具/buff 等
- 特殊地形,包括不限于可被破坏区域(如墙)、移速受限区域(如沼泽)、通过受伤区域(如岩浆)、机关地形(如时不时出现的地刺)等
- BOSS 型敌
- 秘籍,如倍攻击、敌等
加分项
-
版本控制与团队协作
- 符合些 Git 最佳实践(如 commit 历史净规范、commit 描述规范、commit 包含且仅包含项功能、使 Pull Request 功能或分进团队 协作等);
- 团队成员分平等、合理;
-
代码质量与安全
- 对于复杂逻辑使单元测试验证正确性;
-
功能和架构
- 界精致;
- 项录结构良好、清晰;
-
合理使用的 c++ 特性
- 初始化列表
- 类型推断 ( auto / decltype )
- 基于范围的 for 循环
- 智能指针
- 常量表达式 ( constexpr )
- Lambda 表达式
- 字符串字量
-
其他亮点
- 键位选择:支持玩家选择两种不同的操作方式
- 怪物警觉系统:角色靠近怪物时会触发怪物警觉动画,从而使其具有攻击性
- 当敌人未被清空时,房间大门处于锁死状态
- 武器等级系统:游戏中有 NPC“铸铁匠”可以为武器升级,提升武器攻击力,减少消耗魔法值
- 货币系统:存在游戏内金币与用户蓝币两种货币
- 自动存档功能:角色等级与货币在退出游戏时会自动保留
- 雕像系统:可以带给主角 BUFF
- UI 与画面精美:高度还原游戏原貌
-
代码亮点
-
Boss 向周围发射子弹
static int cnt = 0;
if (cnt > 1000) {
cnt = 0;
auto s1 = ShootController::createForBoss(CIRCULE, this);
this->addChild(s1);
/*缓冲*/
for (int i = 0; i < 10000; ++i);
/*auto s2 = ShootController::createForBoss(SQUARE, this);
this->addChild(s2);*/
}
else {
++cnt;
}
- 障碍物判定
bool Boss::isStuck(const Point& objPos) {
/*层大小*/
auto layerSize = _collisionLayer->getLayerSize();
//判断是否触及障碍物
Size mapSize = GlobalParameter::mapNow->getMapSize();
Size tileSize = GlobalParameter::mapNow->getTileSize();
/*转换为地图上的坐标系*/
Point tilesPos(objPos.x / tileSize.width, (mapSize.height * tileSize.height - objPos.y) / tileSize.height);
if (tilesPos.x < 0 || tilesPos.y < 0 || tilesPos.x >= layerSize.width || tilesPos.y >= layerSize.height) {
log("bad ways1\n");
return true;
}
/*获取地图格子的唯一表示*/
int tiledGidcollsion = _collisionLayer->getTileGIDAt(tilesPos);
int tiledGidcollsion1 = _collision1Layer->getTileGIDAt(tilesPos);
int tiledGidOutside = _outsideLayer->getTileGIDAt(tilesPos);
int tiledGidCan = _canLayer->getTileGIDAt(tilesPos);
//图块ID不为空,表示是障碍物
if (tiledGidcollsion != 0 || tiledGidcollsion1 != 0 || tiledGidOutside != 0 || tiledGidCan != 0) {
log("bad ways2\n");
return true;
}
return false;
}
- 子弹爆炸特效
for (int i = 1; i <= iFrameNum; i++)
{
std::string se = StringUtils::format("Breath_%02d.png", i);
frame = frameCache->getSpriteFrameByName(StringUtils::format("Breath_%02d.png", i));
frameVec.pushBack(frame);
}
Animation* animation = Animation::createWithSpriteFrames(frameVec);
animation->setLoops(1);
animation->setDelayPerUnit(0.1f);
Animate* action = Animate::create(animation);
//创建一个回调函数
CallFunc* callFunc = CallFunc::create(
[&]() {
}
);
//组合动作
Action* actions = Sequence::create(action, callFunc, NULL);
♻️ 资源
大小: 33.7MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87415914
相关文章
- 某游戏的反调试
- 【BZOJ5285】[HNOI2018]寻宝游戏(神仙题)
- 【BZOJ4820】[Sdoi2017]硬币游戏 AC自动机+概率DP+高斯消元
- Unity 2D游戏开发教程之精灵的死亡和重生
- 基于BES2500芯片的低功耗蓝牙BLE游戏手柄解决方案源码解析
- 华为应用市场AGC研习社游戏课程上新,助力游戏开发者高效分发获量
- 《Android游戏开发详解》一3.3 接口
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一导读
- 《点睛:ActionScript3.0游戏互动编程》——2.3 使用斜角滤镜模拟Photoshop的斜面样式
- 《Android游戏开发详解》——第2章,第2.20节对象的更多实践——模拟一个色子
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.3节定位光与定向光
- 基于QT(C++)+Sqlite3实现单词消除游戏系统【100010741】
- 基于 QT(C++) 开发的斗地主游戏【100010583】
- 基于QT(C++)实现的翻金币游戏【100010527】
- 去后厂村开游戏厅吧!基于PP-TinyPose的简易体感游戏开发框架
- 力扣解法汇总1140. 石子游戏 II
- 对 游戏 《 2048 》 的一些思考
- 游戏服务器学习笔记 2———— 准备工作
- 游戏启动后提示安装HMS Core,点击取消,未再次提示安装HMS Core(初始化失败返回907135003)
- 基于MVVM架构的游戏App如何集成华为游戏服务(一)——登录认证
- 小学生python游戏编程arcade----敌人自动面向角色并开火
- 【历史上的今天】11 月 15 日:全球首款商用微处理器;微软进军游戏界;ICQ 诞生
- [游戏测试]基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。
- [程序设计]基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。
- linux下终端游戏