zoukankan      html  css  js  c++  java
  • 第二次结对编程作业

    李家涌博客链接
    朱雅珊博客链接
    所Fork的同名仓库的Github项目地址

    2.具体分工

    李家涌:负责AI算法、接口、部分博客撰写
    朱雅珊:负责UI界面设计、部分博客撰写

    3.PSP表格

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

    4. 解题思路描述与设计实现说明

    4.1网络接口的使用

    定义每个功能对应的函数,使用requests模块的post和get函数,得到所需要的数据,再用json模块处理得到所需要的数据。
    登录模块具体代码示例:

    def login(a,b):#登录账号
        url = 'http://api.revth.com/auth/login'
        headers = {
            "Content-Type": 'application/json',
        }
        form_data = {
            "username":a,
            "password":b,
        }
        response = requests.post(url=url, headers=headers, data=json.dumps(form_data), verify=False);
        print(response.text)
        if response.json()['status']==0:
            mytoken=response.json()['data']['token']
            start(mytoken)
        elif response.json()['status']==1005:
            messagebox.askokcancel('WARNING', '用户名或密码错误', icon='warning')
    

    4.2代码组织与内部实现设计(类图)

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

    5.关键代码解释

    枚举组合

    def dfs_1(s, cur):# 暴力枚举组合
        for i in range(s,14):
            s1[i] = 1 # 标记这张牌已经拿过
            temp_1[cur] = poker_1[i]# 将牌暂存
            if cur == 5 :# 选完5张后开始选择另外5张
                init_1()
                dfs_2(1, 1) # 选后5张
            else:
                dfs_1(i + 1, cur + 1) # 选下一张
            s1[i] = 0 # 回溯标记删除
    

    前墩的权值计算

    def first():#计算前墩的权值
        global score
        init_cnt()
        x = 1
    
        for i in range(0,3):
            tempp1[i]=ans_3[i+1]
        tempp1.sort(key=takenum) 
    
        for i in range(1,4):
            ans_3[i]=tempp1[i-1]
    
        for i in range(1,4):
            hua[ans_3[i].flower] +=1
            number[ans_3[i].num]+=1
        x = 1
        for i in range(1,5):
            if hua[i] == 3:
                if shunzi3(ans_3[1].num) == 1: # 三张同花
                    k=(9.0+0.9 / 11.0 * (ans_3[1].num - 1))
                    score += k
                    return k 
        ...
        x = 1
        for i in range(3,0,-1):
            if number[ans_3[i].num] == 1:
                x = ans_3[i].num
            if number[ans_3[i].num] == 2: # 一对
                k=(1.0 + 0.9/(130+13)*((ans_3[i].num - 1)*10+x-1)*1.0)
                score += k
                return k
        x = 1
        k=0.9 / (1300.0 + 130.0 + 13.0)*((ans_3[3].num - 1) * 100 + (ans_3[2].num - 1) * 10 + (ans_3[1].num - 1))
        score += k 
        return k 
    

    6.性能分析与改进

    6.1描述你改进的思路

    1.先进行特殊牌型的判断,如果是就直接输出,减少处理的时间

    2.对于分数与最大分数差距过大的牌型进行剪枝处理

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

    性能分析图

    7.单元测试

    展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路

    输入:
    5 Q &8 &5 $8 $J $6 3 5 *9 &6 &J &Q
    输出:
    $8 $J $6
    *5 Q 3 5 9
    &8 &5 &6 &J &Q

    def printf_ans():#输出
        submit_ans.clear()
        s=""
        for i in range(1, 3 + 1):  # 前墩
            if i!=3:
                s+=number_to_hua(end_3[i].flower)+change(end_3[i].num)+" "
            else:
                s+=number_to_hua(end_3[i].flower)+change(end_3[i].num)
    
        submit_ans.append(s)
        print(s)
    

    8.贴出Github的代码签入记录

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

    问题描述

    1.不清楚算法的流程及前后端交互

    2.不知道用什么工具制作UI

    做过哪些尝试

    1.B站疯狂学习

    2.各种百度

    是否解决

    基本解决

    有何收获

    1.了解的Python的GUI编程

    2.网络接口的使用

    3.前后端的交互

    10.评价你的队友

    评价人:朱雅珊

    • 值得学习的地方:学习效率高,编程能力强,还会耐心指导我学习UI,主动帮忙完善前端代码,绝世好队友。

    • 需要改进的地方:我的队友真的太优秀了,实在想不出有什么需要改进的地方。

    评价人:李家涌

    • 值得学习的地方:队友很关心我们结对编程的进度,学习能力强,需要用啥就学啥。

    • 需要改进的地方:男女生交流可能不是很方便。

    11.学习进度条

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
    1 0 0 7 7 了解原型设计并学习了axure rp8的使用
    2 0 0 12 16 查找资料并想出UI、AI的大致实现思路
    3 360 360 55 70 设计AI
    4 785 1145 77 87 写算法
  • 相关阅读:
    二叉树 排序二叉树-可以通过中序遍历得到排序的数据 二叉排序树时间复杂度O(logn),
    双链表排序
    Linux C 单链表 读取文件 并排序 实例并解释
    Linux 中文乱码问题
    双向链表排序
    玩转iOS开发
    Firefox OS简单介绍
    深入理解Dalvik虚拟机- 解释器的执行机制
    菜鸟学Struts——I18N对国际化的支持
    【leetcode】Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/zys99/p/11768048.html
Copyright © 2011-2022 走看看