第二次结对编程作业
1.链接
(1)结对同学的博客链接(刘烨)
https://www.cnblogs.com/liuye2019/p/11739498.html
(2)结对同学的博客链接(黄斌敏)
https://home.cnblogs.com/u/hbm-031702323/
(3)本作业的博客链接
https://home.cnblogs.com/u/mrzyanwar/
(4)Fork的同名仓库的Github项目地址
https://github.com/liu-ye-sys/ThirteenPoker/tree/master
2.具体分工
本次结对编程作业分工如下:
玛尔孜亚负责前端,即全部UI的实现。
黄斌敏负责后端,即全部算法的实现。
刘烨负责网络接口。
3.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 20 |
Estimate | 估计这个任务需要多长时间 | 60 | 75 |
Development | 开发 | 15740 | 19620 |
Analysis | 需求分析(包括学习新技术) | 7200 | 7920 |
Design Spec | 生成设计文档 | 150 | 180 |
Design Review | 设计复审 | 50 | 75 |
Coding Standard | 代码规范(为目前的开发指定或选择合适的规范) | 120 | 150 |
Design | 具体设计 | 480 | 600 |
Coding | 具体编码 | 7200 | 10080 |
Code Review | 代码复审 | 240 | 255 |
Test | 测试(自我测试、修改代码,提交修改) | 300 | 360 |
Reporting | 报告 | 150 | 130 |
Test Report | 测试报告 | 60 | 45 |
Size Measurement | 计算工作量 | 40 | 30 |
Postmortem & Process Improvement Plan | 事后总结,并提交改进计划 | 50 | 55 |
合计 | 15950 | 19825 |
4.解题思路描述和设计实现说明
(1)网络接口的使用
使用python的requests库发送请求,获取数据,解析数据。
利用requests自带的json()解析数据。
(2)代码组织与内部实现设计
类图
函数
(3)说明算法的关键与关键实现部分流程图
算法关键是每位玩家的手牌有13张,于是每个人的手牌一共有13的阶乘种的排列方式。把所有的排列方式储存起来,然后前3张就是前墩,中间的5张就是中墩,最后的5张就是后墩,注意的是要求后墩>中墩>前墩,通过对十三水每种牌型进行设置权值,得到他们的权值,计算一下手牌的权值总和,取权值最大的牌。
关键实现部分流程图
5.关键代码解释
权值判断
对十三水每种牌型进行设置权值,紧接着对每种排列的前中后墩判断,通过每一墩的牌型,得到他们的权值,计算一下手牌的权值总和
6.性能分析与改进
(1)改进的思路
遍历所有的情况,然后从中选取权值最大的一种,遍历所有情况耗时太久,可能导致超时。
(2)性能分析图和程序中消耗最大的函数
7.单元测试
测试数据:随机生成,不特意构造
测试思路:利用随机生成的数据进行测试,可完成对其实用性和可靠性检测
8.Github的代码签入记录
9.遇到的代码模块异常或结对困难及解决方法
9.1问题描述
1.不会调用接口,不会设置背景图,背景图会掩盖文本或输入框。
2.一开始不知道怎么把不同花色和不同牌面的牌进行解析
9.2做过哪些尝试
有问题上百度,CSDN和博客园有很多教程。
询问舍友
9.3是否解决
全部解决
9.4有何收获
这次是我第一次接触前端类,所以花在学习的时间十分久,导致后来进度延误拖累舍友,但是还是学会了很多知识,还学会了几个可以用到的软件,如果下次有机会,一定会提前准备,早点完成。
10.评价你的队友
刘烨:
值得学习的地方:待人待物十分友好,做事认真,温柔体贴。
需要改进的地方:一起努力学代码!
黄斌敏:
值得学习的地方:认真细心,乐于助人,还有文笔好。
需要改进的地方:共同提升自己的代码能力。
11.学习进度表
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累积学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 0 | 0 | 11 | 11 | 学会综合用户角度用户体验感对原型设计进行思考 |
2 | 480+ | 480+ | 500+ | 500+ | 更加了解前后端 |