uv's桶

导航

第二次结对编程作业

一、链接

结对同学博客链接(林易丰)

本次作业博客链接

GitHub项目地址

二、具体分工

前端: 刘伟楠

后端: 林易丰

博客: 两人共同完成

三、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 15
· Estimate · 估计这个任务需要多少时间 20 15
Development 开发 780 720
· Analysis · 需求分析 (包括学习新技术) 160 160
· Design Spec · 生成设计文档 120 130
· Design Review · 设计复审 40 40
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 60 60
· Design · 具体设计 60 120
· Coding · 具体编码 80 80
· Code Review · 代码复审 20 20
· Test · 测试(自我测试,修改代码,提交修改) 30 45
Reporting 报告 40 40
· Test Report · 测试报告 10 10
· Size Measurement · 计算工作量 10 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40 45
· 合计 1590 1510

四、解题思路描述与设计实现说明

1. 网络接口的使用

以注册绑定为例:

def registerbang(self):
    def register_(user, psw, student_number, student_password):
        url = 'http://www.revth.com:12300/auth/register2'
        headers = {
            'Content-Type': 'application/json'
        }
        data = {
            'username': user,
            'password': psw,
            "student_number": student_number,
            "student_password": student_password
        }
        r = requests.post(url, headers=headers, data=json.dumps(data))
        return r

    r = register_(self.user, self.psw, self.student_number, self.student_password)
    status = r.json()['status']
    if status == 0 and 'user_id' in r.json()['data']:
        self.user_id = r.json()['data']['user_id']
        self.is_register = True
        print('register may be successful')
        print(r.text)
    else:
        print('register failed!')
        error_report(status)
        print(r.text)

2. 代码组织与内部实现设计

AI部分代码组织设计

api部分代码组织设计

3. 说明算法的关键与关键实现部分流程图

算法的关键就是AI。因为太菜,之前想过列出七万多种情况分别计算权值,但是难度比较大,所以AI部分采取了依次找同花顺,葫芦,炸弹,同花,顺子,三条,若找到则给后墩,若多于一个则再给中墩,余下三张牌作为前墩。若找不到则按从大到小排序,将牌按大小依次给后墩,中墩,前墩。

上图为部分流程图,主要思路就是分别寻找同花顺,葫芦,炸弹,同花,顺子,三条,优先给后墩,其次给中墩,剩下三张作为前墩。

五、关键代码解释

林易丰 21:46:58

有价值/重要的代码

都有价值都重要……
举个炸弹的例子:
bmax和mid分别存放大小炸弹的数字(如果有)

        if len(s) == 26:
            if len(bomb_num) == 3:  # 3个炸弹
                bmax = bomb_num[0]
                if bomb_num[1] > bmax:
                    bmax = bomb_num[1]
                if bomb_num[2] > bmax:
                    bmax = bomb_num[2]  #最大给后墩
                # 中间给中墩
                if bomb_num[0] == bmax:
                    if bomb_num[1] < bomb_num[2]:
                        mid = bomb_num[2]
                    else:
                        mid = bomb_num[1]
                if bomb_num[1] == bmax:
                    if bomb_num[0] < bomb_num[2]:
                        mid = bomb_num[2]
                    else:
                        mid = bomb_num[0]
                if bomb_num[2] == bmax:
                    if bomb_num[1] < bomb_num[0]:
                        mid = bomb_num[0]
                    else:
                        mid = bomb_num[1]
                return 2
            elif len(bomb_num) == 2:  # 2个炸弹
                bmax = bomb_num[0]
                if bmax < bomb_num[1]:
                    bmax = bomb_num[1]
                    mid = bomb_num[0]
                else:
                    mid = bomb_num[1]
                return 2
            elif len(bomb_num) == 1:  # 1个炸弹
                bmax =  bomb_num[0]
                return 1
            else:
                return 0  # 没炸弹
        else:  # 找给中墩
            if len(bomb_num) == 2:  # 2个炸弹
                mid = bomb_num[0]
                if mid < bomb_num[1]:
                    mid = bomb_num[1]
                return 2
            elif len(bomb_num) == 1:  # 1个炸弹
                mid =  bomb_num[0]
            else:
                return 0  # 没炸弹

六、性能改进与分析

1. 改进思路

优化规范一下各个找牌函数,之前因为缺少事先的构思,导致主函数里还需要许多逻辑判断和分支。

2. 展示性能分析图和程序中消耗最大的函数


七、单元测试

找同花顺函数:

构造思路就是把找特殊牌的函数拿出来单独对牌测试一下

八、贴出GitHub的代码签入记录

9.1 遇到的代码模块异常或者结对困难及解决办法

1、问题描述:后端接入的代码无法展现在UI上
2、尝试:理解后端传入的API参数,重新写过展示界面的函数。
3、是否解决: 是
4、有何收获:更加熟悉python这门演唱会

10 评价我的队员

10.1 值得学习的地方

队友写代码的能力比较强,逻辑比较清晰

10.2 需要改进的地方

沟通能力可以稍稍加强

11 学习进度条

第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 重要成长
1 223 223 10 熟悉python
2 219 442 11 了解pygame

posted on 2019-10-30 22:41  uv's桶  阅读(118)  评论(0编辑  收藏  举报