第二次结对编程作业

和自甴很熟 提交于 2019-12-03 00:00:51

一、题目描述

题目:“福建赌王”之争

【题目背景】

    话说,自称“赌王”的老周与同样自称“赌王”的老刘在福州展开“赌王”名号的争夺。两人商议决定使用福建当地的一套纸牌游戏规则进行博弈,即“福建十三水”。约定三周后展开决战。老刘修习代码多年,希望开发一套自动化的出牌系统,具体游戏规则请上网查询或找福大柯老板,本次作业要求提交一份完整的前端后端代码。

WARNING:珍惜钱财,远离赌博(含AI赌博)。

二、相关的链接

- 古力亚尔博客地址:https://github.com/ruinzly/031702506
- fork的同名仓库的GitHub项目:https://github.com/ruinzly/031702506

三、具体分工

此次团队编程作业前端和后端两人共同负责,前端先由一人进行开发,另一人负责优化改善(主要是怕这次作业完成不了,想想两个人一起学习前端比较现实!)前一周完成前端部分,后面时间都在忙后端,后端主要是思路问题,再由JAVA实现。

四、PSP表格

PSP

** PSP2.1** ** Personal Software Process Stages ** 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 300 320
Estimate 估计这个任务需要多少时间 50 60
Development 开发 650 1050
Analysis 需求分析 (包括学习新技术) 250 240
Design Spec 生成设计文档 30 30
Design Review 设计复审 30 40
Coding Standard 代码规范 (为目前的开发制定合适的规范) 60 60
Design 具体设计 40 65
Coding 具体编码 200 380
Code Review 代码复审 60 60
Test 测试(自我测试,修改代码,提交修改) 120 240
Reporting 报告 50 70
Test Repor 测试报告 50 60
Size Measurement 计算工作量 35 35
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 60 60
合计 1985 2770

五、解题思路与设计实践说明

  • 网络接口的使用
    登录注册和历史战局等接口,就是调用post或者get方法,然后进行数据的发送和获取数据并加以展示。开启战局和出牌部分的需要通过开启战局获取的card数据发送至自己的后端接口中,并返回排列好的前中后墩,然后通过出牌接口发送至助教的接口中。

    注册接口

    登录接口

  • 内部类图

  • 算法的流程图
    算法的关键就是对于牌型的判断,判断牌的花色->做整体判断是否有相同的牌(分情况讨论四张、三张、两张)->一组一组判断特殊牌型->分配权重->出牌 流程图如下:

    六、关键代码的解释

    十三水算法中,我认为组牌判断是否为特殊牌型、同花顺、炸弹、对子等等牌型都是很重要的,那综合起来就是整个算法都是关键,所以一下只是评论解释其中的一小部分。判断每一个牌型是都会进行测试,在进行标记。

    七、性能的分析与改进

    前端的UI界面

    起初因为刚开始学习前端,各个部分的知识都有所欠缺,只能用最基础的去实现其功能,就导致了在美观上有很大的不足。后来学习了CSS之后,就在原有基础上增加了透明度和圆角等知识,进行了页面美观改进。

    修改前

修改后

后端的算法分析改进

在刚开始设计AI的实现方法时,我们想过使用贪心算法,先找到5张组合在一起最大的牌,放在底墩,再找5张第二大的牌,放在中墩,最后三张放在头墩。这样就符合规则了,但是这种情况下选出的牌,赢得概率不大,就放弃了这种思路,改用其他的方法,即拿到牌后,顺序判断各种牌型,在进行检验。

八、单元测试

该图是前端接口测试出来的结果:

服务器参数传到UI界面显示的牌型、玩家昵称、ID、以及得分情况:

我们通过改变传入的牌来测试输出是否正确,我所测试的测试数据,尽量测试特殊牌型,同花和顺子同时存在的时候如何取舍,还有某些偏僻的特殊牌型如何取舍。

九、Github的代码签入记录

十、遇到的代码模块异常或结对困难及解决方法

问题一: 根据原型制作前端的过程中都是html+js+css小白
解决方式: 百度相关菜鸟教程

问题二: 如何脱离本机进行服务器连接操作
解决方式: 写代码接口与之相连

* 问题三: 代码模块异常处理

代码模块的报错几乎都是因为其接口没有做好,报错最多的就是400、401、502;报这些错的原因有跨域问题,传参不到位,设置的参数与对应接口的参数不符合;解决以上的问题之后就可正常运行了。

十一、评价队友

值得学习的地方

1、学习前端语言时候很认真,心无旁骛;
2、意志力很强,不轻易放弃;
3、勤学好问,效率很高。

还需改进的地方

1、时间方面分配不太均衡。

十二、学习进度条

** 第N周 ** 新增代码(行) 累计代码(行) 本周学习耗时(小时) 重要成长
第一周 0 0 15 利用rp制作原型
第二周 1000 1000 48 制作学习前端基础知识以及后端基础知识
第三周 900 1900 60 后端开发以及github使用
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!