第一次结对编程作业
组队人员
林郁昊、郑木平
原型分析
Need
本次作业要求开发一个自动化的出牌系统,提供的接口如下:
- 登录
- 开启一局游戏
- 出牌
- 查询排行榜
- 查询往期对战结果
首先是后台逻辑部分,十三水的游戏方式比较简单,程序只需要根据发牌接口提供的13张牌,将其分成获胜希望较大的三墩即可。
UI部分,根据要求,还要设计相应的登录界面、当前对战状态、排行榜界面、往期对战信息等。
最终目标是利用所提供的接口开发出可以直接运行的客户端。
Approach
第一阶段,利用原型设计工具设计UI界面,规划整个程序各部分的逻辑结构。
第二阶段,用Python实现程序的编写,用PyInstaller打包成exe程序。
UI设计
设计风格比较简洁统一,没有多余的元素,突出重点。
原型贴图举例
- 登录界面,输入账户密码,点击登录进入菜单界面。
- 菜单界面,有三个按钮,用于跳转至不同的功能:对战、查看排行榜、查看历史记录。
- 发牌阶段,在中央显示发牌员所发的牌,单击出牌进入牌面组合阶段。
- 对战界面,根据发牌员给的牌,组合出三墩水进行比赛。左边是三墩水的组合,右边是三墩水分别对应的牌型,并显示胜负结果,新增返回主菜单按钮。
- 排行榜,新增返回主菜单按钮。
- 往期记录查询,新增返回主菜单按钮。
原型开发工具
墨刀,Adobe Photoshop
结对过程
- 讨论这次作业的要求
- 进行需求分析:需要实现哪些功能、要用到哪些工具、需要掌握哪些技能
- 具体的工作分配
- 我主要负责博客撰写和原型分析审查,郁昊负责原型设计与素材查找、背景制作。
- UI的设计和讨论
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | |
Estimate | 估计这个任务需要多少时间 | 60 | |
Development | 开发 | 2500 | |
Analysis | 需求分析 (包括学习新技术) | 600 | |
Design Spec | 生成设计文档 | 30 | |
Design Review | 设计复审 | 20 | |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | |
Design | 具体设计 | 50 | |
Coding | 具体编码 | 1650 | |
Code Review | 代码复审 | 50 | |
Test | 测试(自我测试,修改代码,提交修改) | 100 | |
Reporting | 报告 | 100 | |
Test Repor | 测试报告 | 30 | |
Size Measurement | 计算工作量 | 20 | |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 50 | |
合计 | 2660 |
设计说明
- 产品:一个自动化出牌的客户端
- 功能:
- 对局(自动出牌,显示当前对局状态)
- 查看排行榜
- 查看历史对局
- 实现方法:
- 调用接口,发送组牌结果,接受对局结果、历史记录等数据
- 通过相应的算法将牌分为前中后三墩(前墩<=中墩<=后墩)
- 算法中尽量分析各种情况,实现较高的胜率
困难及解决方法
困难描述
不懂什么是原型设计,不会使用原型设计工具。
解决尝试
- 上网了解原型设计的主要流程
- 学习如何使用原型工具
- 查看往届的博客,学习经验
是否解决
是。
有何收获
了解了原型设计的大体流程以及原型工具的使用。
心得体会
正式的代码编写还没开始,前面很多的原型设计都是队友完成的,所以比较轻松(逃。感想主要是对接下来的预期。首先是要提前做计划,避免开发的过程中太盲目。其次明确做这些项目的目的是以学习为主,主要是开发过程中的学习和思考。做结对项目和团队项目,不仅是学习的过程,更是交友和成长的过程。
学习进度条
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 0 | 0 | 8 | 8 | 学习了Python的基本语法 |