第二次结对编程作业

坚强是说给别人听的谎言 提交于 2019-12-01 10:18:36

一. 博客链接、github链接

队友陈银山
github地址

二. 具体分工

陈银山:书写十三水出牌逻辑、调用接口
李季城:收集材料、书写博客

三. PSP表格

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

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

1. 网络接口的使用

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

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

算法流程图如下:

五. 关键代码解释

def init_cnt():
    for i in range(0, 15+1):
        hua[i] = 0
        number[i] = 0  # 桶排初始化

def takenum(x):
    return x.num

def shunzi3(start) :
    for i in range(start,start+2+1):
        if number[i] < 1:
            return 0
    return 1

def shunzi5(start):
    for i in range(start,start+4+1):
        if number[i] < 1:
            return 0
    return 1

def standof() :
    for i in range(1,3+1):# 前墩
        end_3[i] = ans_3[i]
    for i in range(1,5+1):#中墩
        end_2[i] = ans_2[i]
    for i in range(1,5+1): #后墩
        end_1[i] = ans_1[i]

def tempof() :
    for i in range(1,3+1):  #前墩
        ans_3[i] = temp_3[i]
    for i in range(1, 5 + 1):  # 中墩
        ans_2[i] = temp_2[i]
    for i in range(1, 5 + 1):  # 后墩
        ans_1[i] = temp_1[i]


def first():#前墩
    global score
    init_cnt()
    x = 1

    for i in range(0,2+1):
        tempp1[i]=ans_3[i+1]
    tempp1.sort(key=takenum) #  前墩牌组有序化

    for i in range(1,3+1):
        ans_3[i]=tempp1[i-1]


    for i in range(1,3+1):
        hua[ans_3[i].flower] +=1
        number[ans_3[i].num]+=1
    x = 1
    for i in range(1,4+1):
        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 # 3张同花顺
    x = 1
    for i in range(1,4+1):
        if hua[i] == 3:
            k=(6.0 +0.9/(1300+130+13)*((ans_3[3].num-1)*100+(ans_3[2].num-1)*10+(ans_3[1].num-1))*1.0 )
            score += k
            return k #3张同花
    x = 1
    if shunzi3(ans_3[1].num) == 1:
        k=(5.0  + 0.9/11.0*(ans_3[1].num-1)*1.0)
        score += k
        return k #3张顺子
    x = 1
    for i in range(3,0,-1):
        if number[ans_3[i].num] == 3:
            k=(4.0+0.9/13.0*(ans_3[1].num - 1)*1.0)
            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 #散牌

六. 性能分析与改进

1.中墩和后墩耗时是最大的

七. 单元测试

八. Github的代码签入记录

九. 代码模块异常或结对困难及解决方法

1.开始的时候接口连接一直错误
2.客户端的后墩、中墩没有办法算出
解决方法:和百度公司达成深入合作

十. 评价队友

十分感谢我的队友,由于个人参加第五届“互联网+”创新创业大赛,所以只接手了这次作业的原型设计和博客撰写,队友基本一个人完成了整个项目的前后端的攥写,包括接口的调用。十分佩服队友的学习能力,一天学习,一天写代码。

十一. 总结

通过这次的作业,学习了不少的关于Pygame的知识还有pytho的知识,感觉自己写一个游戏其实还是有点困难的,从一开始的完全不知道到一点一点的慢慢学习,再到最后的项目成型的过程是十分的开心的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!