第二次结对编程作业

守給你的承諾、 提交于 2019-12-01 10:13:49

一、一些地址及分工

①队友博客链接

②本人博客链接

③Github项目地址

④具体分工

林青霞:UI
徐祖豪:AI

二、 PSP表格

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

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

思路主要就是尽可能找到每一墩的最大的情况

  • 接口使用

算法的接口主要使用了永福提供的注册接口、登录验证接口、开启战局接口和出牌接口

注册:

import http.client
conn = http.client.HTTPSConnection("api.shisanshui.rtxux.xyz")
payload = "{\"username\":\"username\",\"password\":\"password\"}"
headers = { 'content-type': "application/json" }
conn.request("POST", "/auth/register", payload, headers)
res = conn.getresponse()
data = res.read() //拿到服务器的回应

登录:

conn.request("POST", "/auth/login", payload, headers)
res = conn.getresponse()
data = res.read()//拿到服务器的回应
//data里的token和user_id都是后面开启战局需要的

开启战局:

headers = { 'x-auth-token': "token" }
conn.request("POST", "/game/open", headers=headers)
res = conn.getresponse()
data = res.read()

使用token可以从服务器拿到一组牌,之后就是运行算法得出结果,再将结果发回服务器

payload = result
headers = {
    'content-type': "application/json",
    'x-auth-token': token
    }
conn.request("POST", "/game/submit", payload, headers)
res = conn.getresponse()
data = res.read()
  • 代码组织与内部实现设计

  • 部分流程图

四、关键代码解释

在找到中墩或者底墩之后,记录剩余牌的数组将会发生变化,为了防止同一张牌出现两次影响后面的判断,所以被一次都要更新cnt、all和rcd三个数组
num_rcd=list(set(num_rcd).difference(set(down))) #更新num_rcd #更新num_all i=0 while i<5: x = down[i] num_all[x] = 0 i+=1 #更新num_cnt i=0 while i<5: x = int(down[i]/4) num_cnt[x]-=1 i+=1 break

五、 性能分析与改进

①改进思路

②性能分析图

六、 单元测试

七、 Github的代码签入记录

History for 031702634/ShiSanShui.py
Commits on Oct 15, 2019
接口的应用和使用list的bug修复
@xzhcode
xzhcode committed 35 minutes ago
Update ShiSanShui.py
@xzhcode
xzhcode committed 10 hours ago
Commits on Oct 14, 2019
Update ShiSanShui.py
@xzhcode
xzhcode committed 2 days ago
Commits on Oct 13, 2019
Create ShiSanShui.py
@xzhcode
xzhcode committed 2 days ago

八、困难及解决办法

  • 问题描述
    问题1、怎么描述一张牌
    问题2、list 列表的append和+=用法不同导致结果列表里面会含有子列表
  • 做过哪些尝试
    问题1、一开始是想用类的方法描述,后面发现python没有结构体这个数据结构,自己构建又太麻烦,随意就把2-A的牌按花色不同排序,赋予0-51的值,使用NUM_ALL数组记录模拟牌
    问题2、当判断可能存在一种牌型时,会使用列表来保存这个可能,如果这个可能的牌大于一张,且是使用append方法加入列表的,这个牌型可能就会存在小的列表,列表中的子列表是不能被迭代,这样在迭代时就会报错。后面改用+= 添加列表中的元素,问题解决。
  • 是否解决
    问题1、解决
    问题2、解决
  • 有何收获
    加深了对于python语言的list数据结构的认识,而且本次作业大部分时间都在改bug,对于代码的异常调试也有了一些经验

九、 评价你的队友

  • 值得学习的地方
    做作业很积极,态度很认真,对于项目出现的问题在交流之后很快就能得到回应且想出解决方法。
  • 需要改进的地方
    多学习新技术

十、 学习进度条

第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
1 0 0 20 20 熟悉Axure RP用法
2 95 95 5 25 对牌进行分类
3 101 296 5 30 判断牌型
4 273 569 20 55 出牌策略、调试、改bug
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!