基于Cocos2d-x元气骑士游戏
Soul Knight 项目说明文档同济大学软件学院 2020 年面向对象程序设计课程大项目项目信息项目选题元气骑士项目进度时间线游戏说明游戏简介元气骑士是一款地牢类角色扮演游戏玩家将会在随机关卡中遇到不同的敌人并且躲避子弹收集金币不断获得更强力的武器。游戏玩法进入游戏后选择要操作的人物角色在安全地图挑选武器后进入关卡。游戏全程共有五关走到最后击败最终 Boss 即可胜利通关。击杀敌人与开启宝箱可以获得武器与金币。不断升级角色用金币购买更加强力的武器来击败敌人基本操作操作效果WASD 或 ↑↓←→移动主角J 或 Z攻击键X 或 K交互键角色及成长属性角色生命值蓝量护甲骑士8/9/10/11/12220/240/250/260/2708/9/10/11/12牧师7/8/9/10/11240/260/280/300/3208/9/10/11/12武器武器类型攻击力步枪远程3冲锋枪远程2短刀近战3长刀近战10敌人敌人类型血量攻击力持枪者远程101持刀者近战101水晶巨蟹Boss10013画面概览开始界面关卡地图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“铸铁匠”可以为武器升级提升武器攻击力减少消耗魔法值货币系统存在游戏内金币与用户蓝币两种货币自动存档功能角色等级与货币在退出游戏时会自动保留雕像系统可以带给主角 BUFFUI 与画面精美高度还原游戏原貌代码亮点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注更多内容可关注微信公众号【神仙别闹】如当前文章或代码侵犯了您的权益请私信作者删除
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2440448.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!