一、结对情况
二、分工情况
朱庆章负责前端、接口部分,以及博客撰写部分
陈梦雪负责算法部分,以及博客的撰写
三、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planing | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 400 | 420 |
Development | 开发 | 210 | 240 |
Analysis | 需求分析(包括学习新技术) | 300 | 480 |
Design Spec | 生成设计文档 | 60 | 50 |
Design Review | 设计复审 | 20 | 18 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 30 | 30 |
Design | 具体设计 | 120 | 100 |
Coding | 具体代码 | 240 | 280 |
Code Review | 代码复审 | 50 | 40 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | 60 | 80 |
Test Repor | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 15 | 15 |
Postmortem&Process Improvement Plan | 事后总结,并提出过程改进计划 | 30 | 30 |
合计 | 1315 | 1603 |
四、解题思路描述与设计实现说明
1、网络接口的使用
2、代码组织与内部实现设计
3、算法的关键与关键实现部分流程图
整个算法最重要的就是权值的设置,主要是看胜率来设置吧
其实一开始的想法是先不分墩,直接按牌型等级去搜索出五张优先分配给后墩,然后再继续搜索,这样虽然会快很多,但是就跟斗地主里面的机器人托管一样笨
后来就用遍历赋权值的方法暴力搜索,这种虽然慢,但是有点智能的味道
五、关键代码解释
关键部分的算法就是各种牌型的判断,要判断牌型,首先要对这五张/三张牌进行排序、统计花色和数字
接下来就是判断牌型了
- 同花顺
首先是要判断同一花色,然后在判断顺子
for i in range (1,5): if flower[i] == 5: if shunzi_5(temp_third[0].num)
- 炸弹:
只要判断数字桶里面是否有4个数字就行了
for i in range(0,5): if number[temp_third[i].num] == 4
- 葫芦:
只要判断数字桶里有只有2和3
for i in range(0,5): if number[temp_third[i].num] == 3: for j in range(0,5): if number[temp_third[4-j].num] == 2
- 同花:
参考同花顺 - 顺子:
参考同花顺,判断五条顺子的函数是:
def shunzi_5(x): for i in range (x,x+5): if number[x] <1: return 0 return 1
- 三条:
因为三条是三张一样的牌带两张不同的牌,由于之前已经判断过葫芦了,所以这次如果桶里面有三张一样的,那就一定是三条了
for i in range(0,5): if number[temp_third[i].num] == 3
- 连续两对:
由于我的五张牌已经按照从小到大的顺序了,所以如果第i个桶是2且第i+1个桶也是2,那就是连续两对
for i in range(0,4): if number[temp_third[i].num]==2 and number[temp_third[i].num+1]==2
- 普通两对:
两次循环遍历判断就好了~
for i in range(2,15): if number[i]==2: for j in range(i,15): if number[j] == 2:
- 一对:
桶里有个2啦
for i in range(2,15): if number[16-i] == 2
散牌
如果以上牌型都没有判断出来,就是散牌啦六、性能分析与改进
- 特殊牌型
一开始花了挺多时间去研究特殊牌型怎么判断,当我好不容易写了几百行判断特殊牌型的算法后猛然发现,我就算不知道这是特殊牌型,然后我按普通牌型出牌服务器也能判断出我的是特殊牌型(这个应该算是题目的bug??) 在搜索出后墩中,可以预先判断一下后墩的等级,因为后墩的等级最少也要两个对子以上,这样就能排除掉一部分的情况了
七、单元测试
八、Github代码签入记录
九、遇到的代码模块异常或结对困难及解决方法
1.问题描述
- 其实我的js不太得行,但是对比C++和JAVA还是觉得python好上手一点
- 我的flask不得行
2.做过哪些尝试
- 百度一下,谷歌一下
3.是否解决
- 解决
4.有何收获
- 了解了网络接口的使用,对服务器与用户端的交互理解更加深刻
速成flask
十、评价你的队友
- 值得学习的地方
美丽善良温柔大方,学习能力强,效率高 需要改进的地方
我俩都是拖延症杀手学习进度条
第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长 1 0 0 7 7 学了点js 2 100 100 8 15 又学了点js 3 200 300 8.5 23.5 界面设计啥的 4 600 900 10 33.5 flask速成