【Alpha阶段】第五次Scrum Meeting
【Alpha阶段】第五次Scrum Meeting
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 会议+项目燃尽图+成员代码/文档签入记录+每人每日总结 |
Github仓库链接
团队队员
学号 | 姓名 |
---|---|
3119005415 | 黄奕威 |
3219005447 | 连婉玲 |
3119005417 | 黄智权 |
3119005431 | 欧智昕 |
3219005448 | 刘淑婷 |
3119005410 | 冯波昌 |
3219005445 | 何婉莹 |
一、例会图片
线上讨论:
二、Burndown Chart
三、代码/文档签入记录
四、项目进度
队员 | 昨日已完成任务 | 任务概述 | 今日待完成任务 |
---|---|---|---|
黄奕威 | 添加bgm,修改道具逻辑 · Issue #19 | 道具修改成对战时消耗 | 结束后重置的逻辑,简化需求 |
连婉玲 | 更新用户类 · Issue #22 | 修改用户实体类 | 继续根据需求完善设计 |
黄智权 | 精灵等级计算、血量计算 · Issue #17 | 与其他成员对项目各模块进行了分析与讨论,理清需求逻辑,修改了部分模块。 精灵等级计算、血量计算。 | 精灵表的修改 |
欧智昕 | 重构了精灵类· Issue #23 | 重构了精灵类 | 重构精灵类子类 |
刘淑婷 | 关卡模块 · Issue #21 | 对接接口 | 关卡信息的获取 |
冯波昌 | 更新道具 · Issue #24 | 道具类型的更新 | 修改道具表 |
何婉莹 | 完成用户模块接口 · Issue #20 | 用户模块的注册、登录接口;测试 | 查看战斗模块的接口文档 初步规划dao层和service层 |
五、最新模块代码
主页面(点击查看)
import React, { Component, useState } from 'react' import { Link } from 'react-router-dom' import './index.css' import Block from '../../components/Block' import SpiritBag from '../../components/SpiritBag' import PropsBag from '../../components/PropsBag' import ReactAudioPlayer from 'react-audio-player'// 进入游戏之后的页面
export default function Main (props) {
let [isSpiritBagShow, setSBShow] = useState(false)
let [isPropsBagShow, setPBShow] = useState(false)
// 返回
function backTo () {
let res = window.confirm('确定要退出登录吗?')
if (res) {
props.history.push({
pathname: '/'
})
}
}
// 跳转战斗
function toFight (type) {
let res = window.confirm(确定要进入${type}吗?
)
if (res) {
props.history.push({
pathname: '/fight'
})
}
}
return (
src={require('../../assets/audios/home.mp3').default}
/>
usernamessssss
LV.100
)
}
Home界面(点击查看)
import React, { useState } from 'react' import './index.css'import Button from '../../components/Button'
import LoginPanel from '../../components/LoginPanel';
import ReactAudioPlayer from 'react-audio-player';
// 主页模块
function Home () {
let [isClick, setClick] = useState(false);
if (isClick) {
return (
@信安1班——红橙黄绿青蓝紫队
)
} else {
return (
@信安1班——红橙黄绿青蓝紫队
Monster(点击查看)
package ruangong.our_land.model.spirit.monster;import lombok.extern.slf4j.Slf4j;
import ruangong.our_land.model.spirit.Spirit;
import java.util.Random;
@Slf4j
/**
-
野怪类,野怪可捕捉
-
@author wizardk
-
@author HuangZhiquan
-
@email ozx1341530199@gmail.com
/
public class Monster extends Spirit {
/*- 野怪的初始等级,默认为1
/
protected static final int INITIAL_LEVEL = 1;
/* - 经验常量
*/
protected static final int EXP_CONSTANT = 100;
/**
-
根据概率生成野怪(稀有野怪出现概率低,约为3%;普通野怪出现概率高,约为10%),用于精灵捕捉
-
@return 野怪精灵的id
*/
public static int getMonster() {
log.info("根据概率生成野怪");
//初始化野怪id数组
int[] monsterId = new int[100];
monsterId[0] = 4;
monsterId[1] = 5;
monsterId[2] = 6;
for (int i = 3; i < 13; i++) {
monsterId[i] = 7;
}
for (int i = 13; i < 23; i++) {
monsterId[i] = 8;
}
for (int i = 23; i < 34; i++) {
monsterId[i] = 9;
}
for (int i = 34; i < 46; i++) {
monsterId[i] = 10;
}
for (int i = 46; i < 59; i++) {
monsterId[i] = 11;
}
for (int i = 59; i < 69; i++) {
monsterId[i] = 12;
}
for (int i = 69; i < 79; i++) {
monsterId[i] = 13;
}
for (int i = 79; i < 89; i++) {
monsterId[i] = 14;
}
for (int i = 89; i < 100; i++) {
monsterId[i] = 15;
}//随机生成范围为[0,99]的数组下标
Random rand = new Random();
int randNumber = rand.nextInt(100);//随机选择野怪id
return monsterId[randNumber];
}
/**
- 获取经验值,即精灵经验值在原本的基础上加gained
- @param gained 获取到的经验值
*/
public void gainExp(int gained) {
/**
- 当野怪被击败后,给予用户精灵经验
- @return 经验值
*/
public int getExp() {
return EXP_CONSTANT;
}
- 野怪的初始等级,默认为1
Boss类(点击查看)
package ruangong.our_land.model.spirit.boss;import ruangong.our_land.model.spirit.Spirit;
/**
-
boss类
-
@author wizardk
-
@author HuangZhiquan
-
@email ozx1341530199@gmail.com
*/
public class Boss extends Spirit {/**
- 经验常量
*/
protected static final int EXP_BOSS = 1000;
/**
- 当boss被击败后,给予用户精灵经验
- @return 经验值
*/
public int getExp() {
return EXP_BOSS;
}
}
- 经验常量
Spirit类(点击查看)
package ruangong.our_land.model.spirit;import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.NonNull;
import ruangong.our_land.model.helper.ObjectHelper;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.List;
/**
-
精灵类,包括boss、用户初始和野怪
-
@author HuangZhiquan
-
@author Wizardk
-
@Description 精灵类
-
@date Created in 2021-11-02 22:57
-
@Modified By
*/
@Data
@Slf4j
@NoArgsConstructor
public abstract class Spirit {/**
- 精灵的最高等级
/
@Max(value = 100, message = "等级最高为100")
public static final int MAX_LEVEL = 100;
/* - 最大经验值
/
private static final int MAX_EXP = 10000;
/* - 攻击力
/
@Min(value = 0)
private static int attack;
/* - 防御力
/
@Min(value = 0)
private static int defence;
/* - 速度
/
@Min(value = 0)
private static int speed;
/* - 精灵名
/
@NonNull
private String name;
/* - 精灵的id
/
@NonNull
private String id;
/* - 精灵是否稀有(是:1,否:0)
- 精灵稀有与否,关系到精灵捕捉时的成功率
/
@NonNull
private int isRare;
/* - 等级
/
@Min(value = 1, message = "等级最低为1")
private int level;
/* - 血量
/
@Min(value = 0)
private int blood;
/* - 精灵类型(初始、野怪或boss)
*/
private String type;
/**
- 精灵属性(水、火、草)
*/
private String nature;
@JsonIgnore
private int skill1;
@JsonIgnore
private int skill2;
@JsonIgnore
private int skill3;
@JsonIgnore
private int skill4;/**
- 存放精灵的4个技能
*/
@NonNull
private Listskills;
/**
- 初始化技能
*/
protected void initSkills() {
//调用SpiritMapper中的getskill获取skill信息,然后赋值给skill1-4
}
/**
- 根据用户经验值获取当前精灵等级
- @param exp 用户经验值
- @return 精灵当前等级
*/
public int getLevel(int exp) {
int level;
if (exp >= MAX_EXP) {
level = MAX_LEVEL;
} else {
level = exp / 100;
}
return level;
}
/**
- 获取当前精灵血量
- @param blood 精灵原血量
- @param exp 用户经验值
- @return 当前精灵血量
*/
public int getBlood(int blood, int exp) {
int curLevel = getLevel(exp);
int curBlood = (int) (blood + (curLevel - 1) * 0.1);
return curBlood;
}
/**
- 使用技能后修改相应的属性
- @param skill 被使用的技能
*/
public void useSkill(Skill skill) {
}
/**
-
技能类
/
@Data
@NoArgsConstructor
public static class Skill {
//技能基本属性
/*- 技能名
/
@NonNull
String name;
/* - 技能描述
/
@NonNull
String description;
/* - 技能使用次数
*/
int times = 0;
/**
- 技能类型(伤害型或提升型)
- 伤害型:基础伤害值
- 提升型:提升精灵属性(攻击、防御、速度)
*/
@NonNull
String type;
/**
- 技能伤害(若技能为伤害型),用于精灵对战
*/
int hurt;
public void setTimes(int times) {
this.times = ObjectHelper.verifyNonZeroPositive(times, "times");
} - 技能名
}
} - 精灵的最高等级
六、遇到的困难
在写接口的时候,我们才发现前面我们实现的精灵类是在本地模拟,并没有和数据库进行交互,意识到这点后,我们赶紧进行了重构。
七、每人每日总结
黄奕威:总结前端需要的接口文档给后台会比较简单明了
连婉玲:需要和负责其他类的小伙伴充分沟通才不会做无用功
黄智权:一个新功能的实现需要用不同的方法进行尝试,往往很难一步就想出实现方法。不断尝试,不断修改,最终向目标功能靠近。
欧智昕:精灵类需要做挺多东西的,和同样负责精灵类的小伙伴要做好前期沟通
刘淑婷:和小伙伴的对接有点失败,准备重构下
冯波昌:使用navicat进行数据库表的修改很方便
何婉莹:注册,登录模块对代码逻辑要求更加严谨,心思要更缜密才行