链接
鲁任:博客链接,github项目地址
刘京一:博客链接(此页,github项目地址
具体分工
| AI算法 | 接口测试 | 原型设计 | 原型设计实现 | 博客编写 | Github | |
|---|---|---|---|---|---|---|
| 鲁任 | √ | √ | √ | √ | ||
| 刘京一 | √ | √ | √ | √ |
一、原型设计
1.1提供此次结对作业的设计说明
流程图

原型图
1.游戏界面
大眼睛注视着你,赶紧来玩拼图吧!

2.登录界面(可删

3.选择界面
(1)点击设置可退出当前登录及声音设置

(2)拼图游戏暂停后的界面

4.拼图界面
按暂停即可返回选择界面2

隐藏功能:问号--提示文本,灯泡--下一步提示,X--离开提示

5.排行榜
在排行榜界面可以查看步数花费最少的前五名

1.2原型模型设计工具
采用Axure RP 9 Team Edition作为原型开发工具

1.3描述结对的过程,提供非摆拍的两人在讨论、细化和使用专用原型模型工具时的结对照片。
结对过程
多年搭档,自然结对
结对照片

1.4遇到的困难及解决方法
问题1
困难描述:第一次接触原型设计,刚开始决定使用phototype conposer,安装过于麻烦,还捆绑了一个卸载后清理不掉的垃圾2345输入法...%$#$
解决尝试:找到了Axure的破解版,愉快开始学习Axure
是否解决:算是?
问题2
困难描述:第一次使用Axure,对于很多功能都还不熟悉
解决尝试:通过b站学习(b站,永远的神!
是否解决:大概吧,感觉功能了解的也不多,算是够用,不过要想做得美观还得更细致的学习
问题3
困难描述:不知道怎么在axure里面让拼图动起来
解决尝试:网上搜索加在b站看视频,通过if的交互效果即可让拼图动起来,但很神奇的事是我的axure的interaction居然没有if这个交互效果,难道是破解版的原因???
是否解决:木有解决QAQ
有何收获
学会了大概的怎样使用axure,交互效果确实蛮好玩的,网络资源还是很多的,就是很多软件搞破解版还是挺麻烦的。找if交互效果的时候看了不少帖子,原来可以使用axure完成简单的小游戏,还有很多可以去学。
二、AI与原型设计实现
2.1 代码实现思路:
1>网络接口的使用:
python获取接口数据的方式如下:
import request as rq
import json
url = "http://47.102.118.1:8089/api/challenge/start/392eaf5a-f533-4411-a712-344b59a37f0c"
data={'teamid':43,'token':'db89ae69-2536-4f96-91b0-d1c998a7850b'}
data = json.dumps(data)
# 有的时候data需要时json类型的
headers = {'content-type': "application/json"}
req = rq.post(url=url,data=data,headers=headers)
a=json.loads(req.text)
b=a.get("data")
print("第几步进行强制转换: ", b.get("step"))
print("调换的图片编号: ", b.get("swap"))
print("题目标识: ", a.get("uuid"))
print("是否成功:",a.get("success"))
2>代码组织与内部实现设计(类图):

3>算法关键流程图:

4>关键代码:
def __init__(self, start, pos, target):
IDAstar.start = start
IDAstar.pos = pos
IDAstar.target = target
IDAstar.init = Board(start, pos)
IDAstar.maxdep = 0 # 搜索的最大深度
IDAstar.path = ""
def dfs(self, now, lastd):
#开始深度搜索
if now.cost > self.maxdep:
return False
if now.stat == self.target:
return True
pos = now.pos
step = now.step
for i in range(4):
# 方向不可走时
if self.d[pos][i] == -1:
continue
stat = copy.deepcopy(now.stat)
# 0, 1, 2, 3
# w, d, s, a
# 上一步为向左,此步则不能向右走老路,其他方向同理。
if (lastd == -1) or (lastd % 2) != (i % 2) or (lastd == i):
stat[pos], stat[self.d[pos][i]] = stat[self.d[pos][i]], stat[pos]
# 构造函数形式:
# Board(stat, pos, step=0, preboard=None, prepath=[])
temp = Board(stat, self.d[pos][i], step + 1, now, self.index_to_direct[i])
# 如果找到最短路径,递归地记录路径
if self.dfs(temp, i):
self.path += temp.prepath
return True
return False
def IDA(self):
self.maxdep = self.init.cost
while not self.dfs(self.init, -1):
self.maxdep += 1
self.path = self.path[::-1]
return self.path
5>性能分析:


6>部分测试结果:

2.1.2原型设计实现思路
设计流程

重点代码及解释
小方块的填充
为动态创建的div设置如下格式的背景:url(imagePath) x方向的图片偏移A y方向的图片偏移B 来实现填充

判断游戏结束的方法
使用一个[difficulty][difficulty]的二维数组来管理小方块,只需要比较所有小方块的物理坐标和图片坐标是否一致就可以判断是否所有的小方块均已归位,即游戏是否结束

下一步提示功能
在getOpeningPosition()函数里模拟操作交换小方块时,把操作的反动作压入操作栈。当点击提示时,从操作栈弹出一个函数对象并执行,当栈空时,游戏场景被还原,即游戏结束

2.2贴出Github的代码签入记录,合理记录commit信息:
刘京一:

鲁任:




2.3 遇到的代码模块异常或结对困难及解决方法:
鲁任:
问题:
问题描述: 如何判断该八数码是否有解?
解决尝试:判断是否有解的原理
是否解决:是
有何收获:
了解了判断八数码是否有解的算法与原理
刘京一:
问题1
问题描述:css无法直接设置图片透明度
解决尝试:通过百度了各种办法,感觉有点麻烦,后来发现用电脑版美图秀秀p图更加方便
是否解决:是
问题2
问题描述:刚开始其实并没有读懂题目,以为用axure完成拼图游戏即可而不需要代码实现(苍天呐我为啥会这样想
解决尝试:紧急开始学习html,css,javascript
是否解决:是
问题3
问题描述:如何让拼图有下一步提示
解决尝试:网上查资料,发现用js的话,并没有我想象的那么复杂
是否解决:是
其实还有很多困难,没有解决的就不说了@-@
有何收获
这一个多月来真的收获满满,刚开始为了作业在看python的教学视频继续学习Python,后来发现要学习axure,然后迟钝地发现要学html,css,js,当时离ddl没几天了,每天熬夜赶工,真的是ddl催促了我很久之前就有的前端学习规划T-T,从刚开始看别人的代码都云里雾里到能自己写出一个网页,就确实很感慨。还是为自己没有实现所有原来规划的功能而难过,还有更多要学习的地方吧!
2.4评价你的队友:
评价人:刘京一
值得学习的地方:很早就开始学习相关知识,编程的时候十分专注,一口气搞完才会休息的任哥太棒了!心态也比较好
需要改进的地方:沟通不够多,不过在我焦虑的时候一直安慰我,呜呜呜完美搭档!
评价人:鲁任
1>值得学习的地方:
我的队友超强的,算法思路清晰明确,编码能力极佳,这些都是我所欠缺的。
2>需要改进的地方:
太懒了,每次都在deadline前一刻才出炉完整代码
2.2.5 PSP表格:
| 第N周 | 新增代码 | 累计代码 | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
|---|---|---|---|---|---|
| 1 | 87 | 87 | 7 | 7 | 学习了如何使图像切片以及打乱 |
| 2 | 141 | 228 | 10 | 17 | 学习A*算法,深度搜索 |
| 3 | 228 | 456 | 20 | 37 | 了解有关判断八数码是否有解的原理 |
| 4 | 117 | 573 | 5 | 42 | 学习关于接口的使用 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) |实际耗时(分钟)|
| ---- | ---- | ---- | ---- | ---- |
|· Estimate| · 估计这个任务需要多少时间| 2000 | 2520 |
|· Analysis|· 需求分析 (包括学习新技术)| 200 | 220 |
|· Design Spec|· 生成设计文档| 120 | 100 |
|· Design Review|· 设计复审| 100 | 80 |
|· Coding Standard|· 代码规范 (为目前的开发制定合适的规范)| 60 | 50 |
|· Design|· 具体设计| 200 | 260 |
|· Coding|· 具体编码| 1000 | 1240 |
|· Code Review|· 代码复审| 100 | 100 |
|· Test|· 测试(自我测试,修改代码,提交修改)| 200 | 230 |
|· Test Repor|· 测试报告| 100 | 140 |
|· Size Measurement|· 计算工作量| 60 | 30 |
|· Postmortem & Process Improvement Plan|· 事后总结, 并提出过程改进计划| 60 | 70 |
| |· 合计| 2200 | 2520 |
浙公网安备 33010602011771号