1、在文章开头给出结对同学的博客链接、本作业博客的链接、你所Fork的同名仓库的Github项目地址(2分)
2、给出具体分工(2分)
- 陈碧芬:负责UI界面设计以及UI接口连接
- 黄森敏:负责后端代码的编写以及单元测试环节
- 朱丽辰:负责后端服务器接口链接以及代码的完善
3、给出PSP表格(2分)
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 90 |
· Estimate | · 估计这个任务需要多少时间 | 60 | 90 |
Development | 开发 | 1020 | 1290 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 180 |
· Design Spec | · 生成设计文档 | 60 | 30 |
· Design Review | · 设计复审 | 30 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
· Design | · 具体设计 | 240 | 360 |
· Coding | · 具体编码 | 360 | 420 |
· Code Review | · 代码复审 | 60 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 180 |
Reporting | 报告 | 120 | 120 |
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 30 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 60 |
· 合计 | 1200 | 1500 |
4、解题思路描述与设计实现说明(15分)
- 网络接口的使用(3分)
api请求使用的是python里的request库
以下贴出net_api.py文件中的主要函数
import requests import cards_division url='https://api.shisanshui.rtxux.xyz' cards_list = [] max_list = [] def sign_in(username,password): def register(username,password): def logout(): def new_game_and_play(): def get_rank(): def get_history_list(limit,page): def get_history_details(game_id): if __name__=='__main__':
代码组织与内部实现设计(类图)(6分)
我们使用的是纯贪心算法,先出后墩和中墩代码,之后再根据后中墩牌型的类型在避免倒水的情况下出头墩,在后中墩代码实现过程中尽量使牌面平衡,三墩牌面尽量都大说明算法的关键与关键实现部分流程图(6分)
算法关键:
# 获取牌型桶 def getBucket(arr_card): # 统计同数值花色的多少并统计同花色数值的多少 def CardVal(cards_): # 判断同花顺 判断同花个数 在判断有无联顺much个 def CardsTHS(cards_, much): # 后墩,中墩出牌函数 def judge5(_post, _pai, card): # 进行头墩出牌函数 def judge3(_post1, _post2, _pai, card, ty1, ty2): # 将自己处理好的代码进行转换发送至服务端 def zhuanCards(chu, much): # 出牌主函数 def divide_cards(cards_list):
5、关键代码解释(3分)
- 贴出你认为重要的/有价值的代码片段,并解释(3分)
6、性能分析与改进(6分)
- 描述你改进的思路(5分)
- 展示性能分析图和程序中消耗最大的函数(1分)
7、单元测试(5分)
- 展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路
8、贴出Github的代码签入记录(1分)
- 请合理记录commit信息
9、遇到的代码模块异常或结对困难及解决方法(8分)
- 问题描述(2分)
1.对出牌的技巧不够熟练,多种牌型不同组合虽然不保证每一墩都最大,但是尽可能让多的墩赢,这方面思路比较匮乏
2.半路上车python,有些地方只是初步了解,对接口的使用等等完全没有接触过,一头雾水不知道如何去做 - 做过哪些尝试(2分)
1.刚开始考虑使用组合算法,利用C(13,5),C(8,5)对后墩中墩的牌进行遍历,得到一个评分表,最后统一计算全值,选出最优牌,奈何评分系统想不出合理的方案,故放弃,转用纯贪心算法。
2.利用搜索引擎得到python中requests库的使用方法,使接口问题得到解决参考资料 - 是否解决(2分)
1.最后勉强完成了算法,算是写出来了
2.感谢教程,问题解决 - 有何收获(2分)
1.同一种问题可能有多种解决的方法,有些方法更优但是不会使用,求真务实,学会放弃,只求顺利完成出牌
2.搜索引擎妙啊,很多python不会使用的问题都可以靠它速成
10、评价你的队友(4分)
- 值得学习的地方(2分)
1.朱丽辰:很多细节方面考虑的比较仔细清晰,能提供一些独特的想法。
2.陈碧芬:组内行动力max,经常在群里带动大家开始赶进度!我们才能没有在ddl前一天才开始学习!行动标杆。 - 需要改进的地方(2分)
1.朱丽辰:
2.陈碧芬:
11、学习进度条(2分)
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 0 | 0 | 5 | 5 | 学习一些JavaScript知识 |
2 | 200 | 200 | 5 | 10 | 学习一些接口知识,理清楚出牌思路 |
3 | 400 | 600 | 10 | 25 | 实现出牌算法,并对一些问题进行修复,学到了很多python算法 |