Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/Wizard23333/SoulKnightTeamProject


https://github.com/Wizard23333/SoulKnightTeamProject

Last synced: 14 days ago
JSON representation

Lists

README

        

# Soul Knight Project 项目说明文档

> 同济大学2019级c++面向对象荣誉课课程项目

## 项目信息

- 选题:**元气骑士**

- 项目成员:

- [Wizard23333](https://github.com/Wizard23333)
- [kefan-zheng](https://github.com/kefan-zheng)
- [yangzihao1952728](https://github.com/yangzihao1952728)
- [DorotheaIN](https://github.com/DorotheaIN)

- 项目地址:

- 项目进度时间线:

| 时间 | 内容 |
|:--------------: | :------------------------------------: |
| 2020.5.16 | 完成平台搭建、cocos学习 |
| 2020.5.24 | 完成项目信息初始规划、分配任务 |
| 2020.6.02 | 完成素材收集、逻辑构建 |
| 2020.6.09 | 完成基本类的设计:Actor、Scene、Props|
| 2020.6.17 | 完成代码整合、基本实现游戏逻辑 |
| 2020.6.20 | 完善代码,减少bug、编写文档 |

## 项目开发相关

- 游戏引擎:**coco2d-x 3.17.2/4.0**

- 支持平台:**Windows/MacOS**

- 小组分工:

| 姓名 | 分工内容 | 贡献率 |
| :----: | :------------------------------------------------------: | :----------:|
| 吴昊天 | Actor基类及其子类设计、精灵怪物设计、战斗信息设计 | 90%以上 |
| 赵敏 | 安全地图设计、素材收集、音效系统 | 90%以上 |
| 杨梓浩 | 冒险地图设计 | 90%以上 |
| 郑柯凡 | 游戏道具设计 | 90%以上 |
|ps: |部分代码为团队合作完成 |

- 类的设计及继承关系:

| 基类 | 子类 |
|:-----:|:------------------------------------------:|
| Actor | Hero类、Monster类 |
| Scene | FightGroundScene类、WelcomeScene类、HelloWorldScene类、PauseScene类、SaveMapScene类 |
| Props | Box类、 Bullet类、Potion类、Wall类、Weapon类 |

- 评分项完成度

- 基础功能

- [x] 游戏开始界面、背景音乐、音量控制、暂停及恢复功能、退出功能

- [x] 键盘控制

- [x] 支持两类武器:包括近战武器和远程武器、两种近战武器、两种远程武器

- [x] 支持近程、远程小兵

- [x] 支持两种道具:回复生命、回复法力;可通过击败怪物获取

- [x] 支持宝箱机制,开启后可获得道具

- [x] 支持安全地图和冒险地图

- [x] 支持安全地图查看武器和敌人信息

- [x] 支持小兵ai

- [x] 主角死亡返回安全地图

- [x] 包含三个普通关卡和一个boss关卡

- 进阶功能

- [x] 支持金币机制,击败怪物即可获得金币

- [x] 支持boss型敌人

- [x] 支持秘籍机制

- C++新特性

- [x] 类型推断

- [x] 基于范围的for循环

- [x] 智能指针

- 其他亮点

- [x] 游戏还原度高

- 英雄形象、怪物形象等与元气骑士游戏还原度高(多为原始模型图)

- [x] 细节丰富、逻辑正确

- 玩家在拾取道具、查看信息同时无法移动

- 玩家及小兵普通攻击的投掷物始终指向目标

- 释放攻击鼠标出现辅助瞄准点,武器释放的方位由英雄->鼠标瞄准点向量方向决定

- 英雄及小兵普通攻击及释放技能时保证英雄及小兵始终朝向攻击目标

- 优化我方精灵撞击墙面时的自动回弹

- 项目技术难题及解决方法

- 技术难题
- [x] 武器旋转切换
- [x] 碰撞检测问题
- [x] 地图文件在vs上无法显示或显示缺失

- 解决办法
- 通过点击位置计算方向单位向量,求反正切得到旋转角度
- [x] 代码实现
```c++
if(_heroValue.energy >= _weapon.GetBulletenergycost()){
this->attack(touch);
auto dest = touch->getLocation();

auto direction = Vec2(dest.x - _sprite->getPosition().x, dest.y - _sprite->getPosition().y);
direction.normalize();
auto rotateAngle = atan(direction.y / direction.x) / 3.14 * 180;
rotateAngle = direction.x > 0 ? rotateAngle : rotateAngle + 180;
_weapon._sprite->setRotation(-rotateAngle);
return true;
} else {
return false;
}
```
- [x] cocos物理引擎,掩码使用

| 类型 |categoryBitmask | contactTestBitmask |
| :--: | :----------: | :---------------: |
|Actor | 0000011 | 0001100 |
|Hero | 1000000 | 0100000 |
|Props | 0000100 | 0000010 |
|Monster bullet| 0001000 | 0000001 |
|Wall | 1111111 | 1111111 |
|近战Monster | 1011000 | 1100010 |
|远程Monster | 1100010 | 1101100 |

- [x] 使用 Tiled Map Editor进行地图文件编辑

## 游戏截图
- 项目运行截图
- 开始场景地图
![截屏2020-06-20 下午10.06.38.png](https://i.loli.net/2020/06/20/DTqlpuBxERJGHCf.png)
- boss关卡截图
![截屏2020-06-20 下午8.43.22.png](https://i.loli.net/2020/06/20/y9rEYhkXjT3I25o.png)
- 普通关卡截图
![_685C5A8A-769A-6B93-CD89-1DADC2219C9D_.png](https://i.loli.net/2020/06/20/dMkFfB2LVOT7NPA.png)

## 元气骑士 游戏文档

### 游戏简介

**元气骑士**是一款游戏。支持单人作战。

### 游戏玩法

操作角色躲避怪物攻击并击败怪物,通过关卡获得胜利

#### 游戏模式

玩家点击开始游戏即可进入游戏当中

### 基本操作

| 操作 | 效果 |
| :----------------------------: | :--------------------------------------------------------: |
| 按下`WSAD`键 | 控制我方精灵上、下、左、右移动 |
| 点击鼠标左键 | 精灵选择目标进行普通攻击 |
| 按下`g`键 | 精灵切换使用武器 |
| 按住`t`键,靠近道具 | 精灵拾取道具 |
| 触碰宝箱 | 精灵打开宝箱 |
| 进入传送门 | 精灵进入下一关卡 |
| 按下`r`键, | 状态回满 |

### 精灵属性

- 默认属性

| 类型 | 攻击类型 | 血量 | 蓝量&怪物攻击力 | 护盾值 |
| :----: | :-----------: | :------: | :-----------------: | :------: |
| 精灵 | 近程 | 100 | 50 | 30 |
| 怪物 | 远程 | 30-50 | 2-5 | 0 |
| 怪物 | 近程 | 30-50 | 5-10 | 0 |
|boss | 近程&远程 |500,200以下会移动|10-15 | 0 |

### 武器属性

* 默认属性

| 类型 | 武器名字 | 攻击力 | 耗蓝量 |
| :----: | :-----------: | :------: | :------: |
| 近程 | 镰刀 | 4 | 1 |
| 近程 | 剑 | 3 | 0 |
| 远程 | 枪 | 2 | 0 |
| 远程 | 飞镖 | 1 | 1 |