• 第二次结对编程作业


    第二次结对编程作业

    1.链接

    (1)结对同学的博客链接(玛尔孜亚)

    (2)结对同学的博客链接(黄斌敏)

    (3)本作业的博客链接

    (4)Fork的同名仓库的Github项目地址


    2.具体分工

    本次结对编程作业分工如下:

    • 玛尔孜亚负责前端,即全部UI的实现。
    • 黄斌敏负责后端,即全部算法的实现。
    • 刘烨负责网络接口。

    3.PSP表格

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

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

    (1)网络接口的使用

    使用python的requests库发送请求,获取数据,解析数据。

    利用requests自带的json()解析数据。

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

    类图

    函数

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

    算法关键是每位玩家的手牌有13张,于是每个人的手牌一共有13的阶乘种的排列方式。把所有的排列方式储存起来,然后前3张就是前墩,中间的5张就是中墩,最后的5张就是后墩,注意的是要求后墩>中墩>前墩,通过对十三水每种牌型进行设置权值,得到他们的权值,计算一下手牌的权值总和,取权值最大的牌。

    关键实现部分流程图


    5.关键代码解释

    权值判断

     对十三水每种牌型进行设置权值,紧接着对每种排列的前中后墩判断,通过每一墩的牌型,得到他们的权值,计算一下手牌的权值总和


    6.性能分析与改进

    (1)改进的思路

    遍历所有的情况,然后从中选取权值最大的一种,遍历所有情况耗时太久,可能导致超时。

    (2)性能分析图和程序中消耗最大的函数


    7.单元测试

    测试数据:随机生成,不特意构造
    测试思路:利用随机生成的数据进行测试,可完成对其实用性和可靠性检测


    8.Github的代码签入记录

     


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

    9.1问题描述

    1.不会调用接口,不会设置背景图,背景图会掩盖文本或输入框。
    2.一开始不知道怎么把不同花色和不同牌面的牌进行解析

    9.2做过哪些尝试

    有问题上百度,CSDN和博客园有很多教程。

    9.3是否解决

    全部解决

    9.4有何收获

    这次第一次写完的时候,由于在开始编程之前有很多细节没有考虑进去,又花费时间去修改算法。所以在某一项目的准备阶段,要尽量把所有容易忽略的细节问题考虑清楚,养成良好习惯。


    10.评价你的队友

    玛尔孜亚:

    • 值得学习的地方:很有耐心,脾气很好,善于沟通,做事非常认真。
    • 需要改进的地方:一起努力学代码!

    黄斌敏:

    • 值得学习的地方:认真细心,能发现我的一些漏洞,还有文笔好。
    • 需要改进的地方:共同提升自己的代码能力。

    11.学习进度表

    第N周新增代码(行)累计代码(行)本周学习耗时(小时)累计学习耗时(小时)重要成长
    1 0 0 10 10 学会mockplus使用方法
    2 431 431 15 23 掌握的pygame的大部分用法,将基本的前端功能实现了。
    3 210 641 13 36 简化了扑克牌的载入和显示,将完成度提高。
    4 116 757 7 43 与后端对接,完成了所有代码工作,学习了网络接口的知识
  • 相关阅读:
    Centos5.8 安装 ImageMagick 6.8.9-3
    Centos5.8 安装 Redmine
    Apache配置中的ProxyPass 和 ProxyPassReverse
    Centos5.8 安装SVN并配置HTTP访问
    Centos5.8 安装 MySQL5.6.19
    Centos5.8 安装 PHP5.5 和 memcached
    CentOS RHEL 安装 Tomcat 7
    Centos5.8 iptables管理
    在SecureCRT中使用rz和sz传输文件
    在Mac mini上安装 ESXi 5.5
  • 原文地址:https://www.cnblogs.com/liuye2019/p/11739498.html
Copyright © 2020-2023  润新知