团队作业4——项目冲刺【Alpha阶段】第三次 Scrum Meeting

【Alpha阶段】第三次Scrum Meeting

这个作业属于哪个课程 软件工程
这个作业要求在哪里 作业要求
这个作业的目标 站立式会议+项目燃尽图+成员代码/文档签入记录+每人每日总结

Github仓库链接

团队队员

学号 姓名
3119005415 黄奕威
3219005447 连婉玲
3119005417 黄智权
3119005431 欧智昕
3219005448 刘淑婷
3119005410 冯波昌
3219005445 何婉莹

一、例会图片

a1.jpg

二、Burndown Chart

a5.png


三、代码/文档签入记录

a6.png

a7.png

a8.png

a9.png

a10.png


四、项目进度

队员 昨日已完成任务 任务概述 今日待完成任务
黄奕威 用户背包UI搭建 · Issue #10 精灵背包和道具背包UI、精灵战斗场景动画优化 用户信息面板UI
连婉玲 总结 · Issue #6 完成了用户类的初始设计 完善用户类
黄智权 精灵类属性补充及方法完善 · Issue #11 精灵类属性补充、升级方法实现、精灵表和技能表的初始化 新增用户拥有精灵类
欧智昕 关卡故事完善 · Issue #13 完成了关卡故事补充 优化精灵类的设计
刘淑婷 总结 · Issue #3 完成了后台框架的搭建 尝试与前端进行接口对接
冯波昌 基本道具思路 · Issue #9 道具分类 道具类基本功能实现
何婉莹 总结 · Issue #8 查看接口文档,初步规划接口 尝试与前端进行接口对接

五、最新模块代码

精灵面板与道具面板(点击查看)
import React, { useState } from 'react'
import './index.css'
import Block from '../Block';
import Button from "../Button"

export default function SpiritBag (props) {
  const { onClick } = props;
  const [selected,setSelect] = useState(require("../../assets/images/spirit/2.png").default);
  function switchSpirit(img) {
    setSelect(img);
  }
  return (
    <div className='sb-container flex-start-stretch-col'>
      <div className='sp-header flex-end-center' onClick={onClick}>
        X
      </div>
      <div className='flex-around-center'>
        <div className='sb-left flex-around-center-wrap'>
          <Block onClick={switchSpirit.bind(this,require("../../assets/images/spirit/2.png").default)} text='' img={require("../../assets/images/spirit/2.png").default} size='medium'></Block>
          <Block onClick={switchSpirit.bind(this,require("../../assets/images/spirit/1.png").default)} text='' img={require("../../assets/images/spirit/1.png").default} size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
          <Block text='' size='medium'></Block>
        </div>
        <div className='sb-right flex-between-center-col'>
          <div className='sb-title'>精灵名称</div>
          <div className='sb-img'>
            <img src={selected} alt="" />
          </div>
          <div className="sb-props flex-center-center-wrap">
              <div className="sb-prop">攻击:100</div>
              <div className="sb-prop">防御:100</div>
              <div className="sb-prop">血量:100</div>
              <div className="sb-prop">速度:100</div>
              <div className="sb-prop">属性:草</div>
              <div className="sb-prop">攻击:100</div>
          </div>
          <div className="sb-panel">
              <Button size="small">出战</Button>
          </div>
        </div>
      </div>
    </div>
  )
}

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";

// 进入游戏之后的页面
export default function Main (props) {
  let [isSpiritBagShow, setSBShow] = useState(false);
  let [isPropsBagShow,setPBShow] = useState(false);
  return (
    <div className='main-container flex-between-stretch-col'>
      <div className='main-header flex-end-center'>
        <Link to='/user'>
          <Block
            img={require('../../assets/images/icons/avatar.jpg').default}
            size='small'
          />
        </Link>
      </div>
      <div className='main-content flex-around-center'>
        <Link to='adventure'>
          <Block
            img={require('../../assets/images/icons/adventure.jpg').default}
            size='big'
            text='冒险'
          />
        </Link>
        <Link to='fight'>
          <Block
            img={require('../../assets/images/icons/ring.jpg').default}
            size='big'
            text='训练'
          />
        </Link>
        <Link to='fight'>
          <Block
            img={require('../../assets/images/icons/catch.jpg').default}
            size='big'
            text='探索'
          />
        </Link>
      </div>
      <div className='main-footer flex-end-center'>
          <Block
            img={require('../../assets/images/icons/pet.png').default}
            size='small'
            onClick={setSBShow.bind(this,true)}
          />

          <Block
            img={require('../../assets/images/icons/bag.png').default}
            size='small'
            onClick={setPBShow.bind(this,true)}
          />
      </div>


      {/* 宠物面板 */}
      {
        isSpiritBagShow ? <SpiritBag onClick={setSBShow.bind(this,false)}/> : null
      }

      {/* 道具面板 */}
      {
        isPropsBagShow ? <PropsBag onClick={setPBShow.bind(this,false)}/> : null
      }
    </div>
  )
}
主页面(点击查看)
import React, { useState } from 'react'
import './index.css'

import Button from '../../components/Button'
import LoginPanel from '../../components/LoginPanel'

// 主页模块
function Home () {
  let [isClick, setClick] = useState(false)
  if (isClick) {
    return (
      <div className='home-container flex-around-center-col'>
        <div className='title'>@信安1班——红橙黄绿青蓝紫队</div>
        <LoginPanel />
      </div>
    )
  } else {
    return (
      <div className='home-container flex-around-center-col'>
        <div className='title'>@信安1班——红橙黄绿青蓝紫队</div>
        <Button onClick={() => setClick(!isClick)}>
          <a>进入游戏</a>
        </Button>
      </div>
    )
  }
}

export default Home
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 abstract class Boss extends Spirit {                                                                                          
                                                                                                                                    
/**                                                                                                                                  
* 经验常量                                                                                                                            
*/                                                                                                                                   
protected static final int EXP_BOSS = 1000;                                                                                          
                                                                                                                                     
public Boss(String name, String id, int level, int blood, int attack, int defense, int speed,String type,String nature,int isRare) { 
super(name, id, level, blood, attack, defense, speed, type, nature,isRare);                                                          
}                                                                                                                                    
                                                                                                                                     
/**                                                                                                                                  
* 当boss被击败后,给予用户精灵经验                                                                                                          
* @return 经验值                                                                                                                      
*/                                                                                                                                  
public int getExp(){                                                                                                                 
return EXP_BOSS;                                                                                                                     
}                                                                                                                                    
}                                                                                                                                    
道具分类(点击查看)
package ruangong.our_land.model.prop;
/**
 * @Author:FengBoChang
 * @Description:道具类
 * @Date: Created in 2021-11-23
 */
public class Prop {
    //道具类型
    int type;        //序号不同代表不同的道具  0:精灵球  1:血包  2:pp
    int sub_type;    //序号不同代表不同的功能
    String prop_name;   //分别为 精灵球,血包,pp
    String effect;
    String description;     //功能介绍
    float capture_rate= (float) 0.2;    //基础精灵球捕捉率,不同的精灵球有不同的捕捉率

    public Prop(int type, int sub_type, float capture_rate){

        if(type==0){
            this.prop_name="精灵球";
            if(sub_type == 0) {
                this.description="高级球:有一定机率捕捉到精灵";
                this.capture_rate = capture_rate;
                this.effect="20%捕捉率";
            }else if(sub_type==1){
                this.description="超级球:有1.5倍机率捕捉到精灵";
                this.capture_rate = (float) (1.5*capture_rate);
                this.effect="30%的捕捉率";
            }else if(sub_type==2){
                this.description="溜溜球:有2倍机率捕捉到精灵";
                this.capture_rate = (float) (2*capture_rate);
                this.effect="40%的捕捉率";
            }
        }

    }

}
异步发送邮箱功能(点击查看)
 package ruangong.our_land.controller;                           
 import org.springframework.beans.factory.annotation.Autowired;  
 import org.springframework.web.bind.annotation.PostMapping;     
 import org.springframework.web.bind.annotation.RequestMapping;  
 import org.springframework.web.bind.annotation.RestController;  
 import ruangong.our_land.aspect.WebLog;                         
 import ruangong.our_land.model.ResultInfo;                      
 import ruangong.our_land.utils.EmailUtil;                       
                                                                 
 /**                                                             
 * @Author: Lsutin                                               
 * @Date: 2021/11/2 14:35                                        
 * @describe:                                                    
 */                                                              
 @RestController                                                 
 @RequestMapping("/user")                                        
 public class UserController {                                   
 @Autowired                                                      
 private EmailUtil emailUtil;                                    
                                                                 
 @PostMapping("/mail")                                           
 @WebLog(message = "发送邮箱")                                     
 public ResultInfo send(){                                       
 emailUtil.sendPlainText("找回密码","password","2335287299@qq.com"); 
 return ResultInfo.success(null);                                
 }                                                               
 }                                                               

六、遇到的困难

  1. UI设计和战斗动画优化较为费时费力。

  2. 精灵升级方法关联属性,自定义数学关系需要一定时间。

  3. 前后端适配需同时看懂前端UI与后台接口的逻辑,才能协调项目运行。

  4. 道具功能与精灵类相关,需要良好的沟通以确定参数与返回值等信息。

  5. 二维矩阵生成地图太麻烦,改为以概率随机生成野怪。


七、每人每日总结

黄奕威:UI部分工程量较大,需要花费不少时间进行UI逻辑设计以及动画优化。

连婉玲:根据前端需要,提供用户精灵背包与道具背包的功能实现。

黄智权:初始化精灵表以及技能表,便于精灵生成以及技能反馈。

欧智昕:精灵类与道具类的方法衔接与参数规定需要对应的成员提前进行沟通。

刘淑婷:统筹后台各模块进度,Github仓库管理、分支管理;地图类关卡设计进行中。

冯波昌:初始化道具表,插入道具信息,便于方法引用。

何婉莹:查看接口文档,清理需求,便于后续层次规划。

posted @ 2021-11-24 21:43  hzq--  阅读(44)  评论(0编辑  收藏  举报