一. 博客链接、github链接
二. 具体分工
陈银山:书写十三水出牌逻辑、调用接口
李季城:收集材料、书写博客
三. PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 725 | 905 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 530 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 生成设计文档 | 5 | 5 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 60 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 300 | 330 |
Reporting | 报告 | 60 | 30 |
· Test Repor | · 测试报告 | 10 | 20 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 300 |
· 合计 | 810 | 1010 |
四. 解题思路描述与设计实现说明
1. 网络接口的使用
2. 代码组织与内部实现设计(类图)
3. 算法的关键与关键实现部分流程图
算法流程图如下:
五. 关键代码解释
def init_cnt(): for i in range(0, 15+1): hua[i] = 0 number[i] = 0 # 桶排初始化 def takenum(x): return x.num def shunzi3(start) : for i in range(start,start+2+1): if number[i] < 1: return 0 return 1 def shunzi5(start): for i in range(start,start+4+1): if number[i] < 1: return 0 return 1 def standof() : for i in range(1,3+1):# 前墩 end_3[i] = ans_3[i] for i in range(1,5+1):#中墩 end_2[i] = ans_2[i] for i in range(1,5+1): #后墩 end_1[i] = ans_1[i] def tempof() : for i in range(1,3+1): #前墩 ans_3[i] = temp_3[i] for i in range(1, 5 + 1): # 中墩 ans_2[i] = temp_2[i] for i in range(1, 5 + 1): # 后墩 ans_1[i] = temp_1[i] def first():#前墩 global score init_cnt() x = 1 for i in range(0,2+1): tempp1[i]=ans_3[i+1] tempp1.sort(key=takenum) # 前墩牌组有序化 for i in range(1,3+1): ans_3[i]=tempp1[i-1] for i in range(1,3+1): hua[ans_3[i].flower] +=1 number[ans_3[i].num]+=1 x = 1 for i in range(1,4+1): if hua[i] == 3: if shunzi3(ans_3[1].num) == 1: k=(9.0+0.9 / 11.0 * (ans_3[1].num - 1)) score += k return k # 3张同花顺 x = 1 for i in range(1,4+1): if hua[i] == 3: k=(6.0 +0.9/(1300+130+13)*((ans_3[3].num-1)*100+(ans_3[2].num-1)*10+(ans_3[1].num-1))*1.0 ) score += k return k #3张同花 x = 1 if shunzi3(ans_3[1].num) == 1: k=(5.0 + 0.9/11.0*(ans_3[1].num-1)*1.0) score += k return k #3张顺子 x = 1 for i in range(3,0,-1): if number[ans_3[i].num] == 3: k=(4.0+0.9/13.0*(ans_3[1].num - 1)*1.0) score += k return k#三条 x = 1 for i in range(3,0,-1): if number[ans_3[i].num] == 1: x = ans_3[i].num if number[ans_3[i].num] == 2: k=(1.0 + 0.9/(130+13)*((ans_3[i].num - 1)*10+x-1)*1.0) score += k return k#单对 x = 1 k=0.9 / (1300.0 + 130.0 + 13.0)*((ans_3[3].num - 1) * 100 + (ans_3[2].num - 1) * 10 + (ans_3[1].num - 1)) score += k return k #散牌
六. 性能分析与改进
1.中墩和后墩耗时是最大的
七. 单元测试
八. Github的代码签入记录
九. 代码模块异常或结对困难及解决方法
1.开始的时候接口连接一直错误
2.客户端的后墩、中墩没有办法算出
解决方法:和百度公司达成深入合作
十. 评价队友
十分感谢我的队友,由于个人参加第五届“互联网+”创新创业大赛,所以只接手了这次作业的原型设计和博客撰写,队友基本一个人完成了整个项目的前后端的攥写,包括接口的调用。十分佩服队友的学习能力,一天学习,一天写代码。
十一. 总结
通过这次的作业,学习了不少的关于Pygame的知识还有pytho的知识,感觉自己写一个游戏其实还是有点困难的,从一开始的完全不知道到一点一点的慢慢学习,再到最后的项目成型的过程是十分的开心的。