第二次结对编程作业

ぐ巨炮叔叔 提交于 2019-12-02 13:32:55

第二次结对编程作业

一、结对博客信息:

二、具体分工

  • 前端:陈天恒,用unity设计十三水界面和交互
  • 后端:张火标,负责算法设计

三、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 50 70
Estimate 估计这个任务需要多少时间 1025 1160
Development 开发 0
Analysis 需求分析(包括学习新技术) 50 70
Design Spec 生成设计文档 45 40
Design Review 设计复审 5 10
Coding Standard 代码规范(为开发制定合适的规范) 0 0
Design 具体设计 700 800
Coding 具体编码 0 0
Code Review 代码复审 0 0
Test 测试(自我测试,修改,提交修改) 0 0
Reporting 报告 150 140
Test Report 测试报告 0 0
Size Measurement 计算工作量 5 0
Postmortem & Process Improvement Plan 事后总结并提出过程改进计划 20 30
合计 1025 1160

四、解题思路描述与设计实现说明

1.网络接口的使用

后端(张火标):
登入
img
开局
img
出牌
img

前端(陈天恒):采用的是JavaScript的jQuery进行网络请求,在登陆的时候把token和user_id存入本地,其它的要调用token时再从本地取出,要调用token的地方有历史战绩和历史战绩详情和开始游戏界面。

  • 注册接口
    img
  • 登陆接口
    img
  • 注销接口
    img
  • 历史战绩接口
    img

2.代码组织与内部实现设计(类图)

作用 思路
Main 负责调配多个类,以及进行网络请求。 主类进行调配网络请求,获得牌,然后通过juedge_best类来的得到最有的牌
juedge_best 负责将得到的牌组合出最好的组合 本质上属于遍历每一种可能的组合,然后通过自己制定的规则,来判断哪一个组合的赢面最大。
API(接口) 关于网络请求的多种不同类型的请求的接口 里面写了注册,登陆,开启战局,出牌的请求方式。
Login 是发送登陆网络请求的请求体 一个请求体的类,有一个int和一个String
Login_return 是网络请求的返回体(登陆) 得到String status,data{int id,String token}
open_retrun 是返回开启战局之后,得到的返回体,有牌的详细情况 也是一个实体类
Submit 发送牌的网络请求 一个实体类。
Submit_return 网络请求的返回体的类。用来观察要不要 一个实体类,有牌局是否合理的信息

3.说明算法的关键与关键实现部分流程图

  • 算法部分
    img

五、关键代码解释

重要的/有价值的代码片段

  • 排序函数(张火标):
def paixu(list):
    temp=[]
    length=len(list)
    for i in range(length):
        if list[i][1] == 'A':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == 'K':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == 'Q':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == 'J':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '1':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '9':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '8':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '7':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '6':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '5':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '4':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '3':
            temp.append(list[i])
    for i in range(length):
        if list[i][1] == '2':
            temp.append(list[i])
    return temp
  • 黑桃函数(张火标)其他颜色也是类似
def heitao(mypai):
    "黑桃列表"
    heitaolist=[]
    for i in range(len(mypai)):
        if mypai[i][0]=='$':
            heitaolist.append(mypai[i])
    return heitaolist
  • XXX(陈天恒)

  • XX(陈天恒):

    • 排行榜核心:
    
    
    • 战绩详情
    
    

    六、性能分析与改进

    1.改进的思路

  • 消耗最大的函数是网络请求所消耗的,这个有点难改进。

  • 算法开始的时候考虑不是很周全,比如连队就没考虑到。

  • 然后对于一些特殊情况,可以先提前判断,可以减少消耗。

    2.展示性能分析图和程序中消耗最大的函数

    img
    img
    img
    img

七、单元测试

  • 用的是Junit4
  • 先进行本地测试:
    img
    img
    img
  • 进行网络登陆测试:
    img
    img
  • 进行开启战局测试:
    img
    img
  • 出牌测试:
    img
    img

八、Github的代码签入记录

  • 前端可执行文件的签入(陈天恒)
    [img]
  • 后端算法代码签入(张火标)
    [img]
    [img]

    九、遇到的代码模块异常或结对困难及解决方法

张火标(后端)

1.

问题描述:在排序时卡主了,输出一直为空
做过哪些尝试:查找一下我是否对python语句的误解,再看看程序有没有问题
解决方法:换了一种想法,比较通俗一点的做法。成功。
有何收获: 对于解决问题更有信心了

2.

问题描述:对于python并不熟悉,接口方面没接触过
做过哪些尝试:自己查找网络资源,向同学请教
是否解决:解决了
有何收获: 笨鸟真的要先飞才行

陈天恒(前端)

1.

问题描述:X
做过哪些尝试:X
是否解决:X
有何收获:X

2.

问题描述:X
做过哪些尝试:X,
是否解决:成功解决
有何收获:掌握了接口的使用方法

十、评价你的队友

张火标对陈天恒

  • 值得学习的地方
    • 对一个问题能够一直探寻,直到解决为止。
    • 还有值得学习的地方就是,对于一个新的知识能够一直坚持的看下去,一直去吸收这一方面的内容,是让我觉得自己不足的地方,非常值得我去学习。
  • 需要改进的地方
    • 应该尽可能地不要通宵,少熬夜。

陈天恒对张火标

  • 值得学习的地方
    • 从国庆就开始打代码,较早开始准备,而我比较迟才开始学习前端,我应该向他学习早点开始准备。他不断完善代码,坚持不懈,从开始学习到现在花了两周左右,有困难就继续努力,这种精神很值得我学习。
  • 需要改进的地方
    • 算法可能不够复用性不够好,下次可以改进一下

十一、学习进度条

  • 后端(张火标)
第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
1 0 0 6 6 上手Axure RP,了解原型设计
2 600 600 15 21 写算法
3 200 800 8 29 学习网络接口的使用
  • 前端(陈天恒)
第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
1 0 0 6 6 上手Axure RP,了解原型设计
2 0 0 20 26 看视频学习HTML+CSS+JS
3 1170 1170 50 76 写前端的网站和交互,学会接口的使用
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!