第二次结对编程作业
1.作业地址
结对同学的博客链接:https://www.cnblogs.com/linxinlx/p/11681184.html
本作业博客链接:https://www.cnblogs.com/zhuozhuohaha/p/11681515.html
fork的同名仓库的GitHub项目:https://github.com/zhuozhuohaha/shisanshui
UI展示
链接:https://reccloud.cn/u/1fhwty4
2.具体分工
薛紫微:前端UI界面
林鑫:后端AI
3.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计这个任务需要多少时间 | 20 | 20 |
Development | 开发 | 1885 | 2080 |
Analysis | 需求分析 (包括学习新技术) | 80 | 90 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 | 20 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 25 | 40 |
Coding | 具体编码 | 1500 | 1650 |
Code Review | 代码复审 | 60 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 160 | 180 |
Reporting | 报告 | 180 | 230 |
Test Report | 测试报告 | 60 | 80 |
Size Measurement | 计算工作量 | 40 | 50 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 80 | 100 |
合计 | 2185 | 2330 |
4.解题思路描述与设计实现说明
(1)网络接口的使用:
本次使用的是csharp进行编程,所以认真地看了c#如何获取http请求,写了一个调用API的类,里面写了get和post函数进行请求,通过这种方式调用注册登陆出牌等API接口,从而实现了网络接口的使用。
(2)代码组织与内部实现设计(类图):
(3)说明算法的关键与关键实现部分流程图:
前端UI界面
算法的关键进行窗口的建立、Button的使用和对API返回数据的处理
后端AI
算法的关键是将字符串先转换成一个由花色和牌面数字组成的三位数,然后对三位数进行处理,把能找到的最大牌型先找出来,然后接着在剩下的牌中再找出最大的牌型,以此类推,直到三墩水都有牌。
5.关键代码解释
前端UI界面
其实创建窗口什么的都不难,关键是如何处理从API传过来的数据,全局变量的调用是处理该数据的关键
后端AI
这是我认为比较有价值的一部分,主要是困扰了我一段时间,所以就贴出来了,这部分是调用API以及json字符串和json对象的转换,自己看材料的时候还不是很清楚,还问了大佬才解决的,所以觉得挺有价值的。
6.性能分析与改进
(1)改进思路:
前端UI界面
由于返回的是json串,输入到排行榜时不太美观,一次我通过在窗口里创滑动表格,将json里的值输入进去
后端AI
因为每次都是取出最大的牌型,这就会导致一个问题,比如底墩是葫芦,中墩是两个对,此时因为每次取最大,所以会导致葫芦所跟的对是三个对中最大的,这样中墩就会变得比较小,所以需要进行改进,改进思路就是碰到葫芦时进行判定从而选取最小的对,从而是算法得到了进一步的优化。但是我发现还有连对这个规则,所以又得进一步实现改进,特判这个最小对是否与其他对存在连对关系,如果是则取较大的对,再次重复上述过程,排除连对情况后,得到葫芦所需的对子。
(2)性能分析图和程序中消耗最大的函数:
前端UI界面
后端AI
7.单元测试
测试的是CardmodelTes1函数,构造测试的思路是检测葫芦的对是否会影响
中墩多个对存在的情况,测试出不会影响,说明算法有所改进。
8.Github的代码签入记录
9.遇到的问题及解决方法
(1)问题描述:
不懂滑动表格的创建
不会用c#进行网络请求;
不知道怎么画类图;
(2)做过的尝试:
百度类似需求代码
查看菜鸟教程
在CSDN上搜索如何用C#进行网络请求以及询问大佬;
在CSDN上搜索如何画类图;
(3)是否解决:
已解决
(4)有何收获:
学习到了如何用python创建简单ui界面
学习了一门新的语言csharp;
再次深入感受到面向对象方法;
学会如何用Csharp获取网络请求和画类图;
认识到搜索能力的重要性;
10.评价队友
(1)值得学习的地方:
一直在努力地想办法完成;
热情善于带动积极的气氛
(2)需要改进的地方:
沟通较少大部分都是各做各的;
没有整体的大计划,导致后面很紧张
11.学习进度条:
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 0 | 0 | 10 | 10 | 学会了python、墨刀、十三水纸牌 |
2 | 560 | 560 | 13.5 | 23.5 | 学会了csharp,并能简单使用 |
3 | 1200 | 1760 | 14 | 37.5 | 学会了csharp获取网络请求以及如何画类图 |