结对编程作业
一、项目及分工
我的博客链接:https://www.cnblogs.com/cpandbb/
队友的博客链接:https://www.cnblogs.com/Wifi-yang/
项目地址:https://github.com/chrisxixixi/huarongdao
分工:
原型设计 | AI | 游戏功能 | 解题改良 | |
---|---|---|---|---|
杨锋夏 | √ | √ | ||
黄纯朴 | √ | √ | √ |
二、原型设计
设计说明:
这次结对编程,我们看了很多的数字华容道跟拼图游戏:
还有:
我们设计的最终的是这样的:
原型设计工具:墨刀
三、AI功能的实现
很自闭,两个人没有成功把这部分功能做出来。做完了分割图片和处理ssim然后卡在了还原算法这边。
做了好几天,结果卡太久了,测试接口也关闭了 然后之后一直blabla也没能成功做出来
本来预期的做法是:
graph LR
A[分割图片] -->B[还原算法]
B --> C[使用ssim判断还原是否成功]
结果成功了前后两部分,中间拉跨了。
网络接口的使用
def start(uuid):
url = 'http://47.102.118.1:8089/api/challenge/start/' + uuid
teamdata = {
"teamid": 58,
"token": "e422a424-0ab4-4b25-b973-923eb887ae42"
}
r = requests.post(url, json=teamdata)
r_json = r.json()
print(r_json)
chanceleft = r_json['chanceleft']
img_str = r_json['data']['img']
step = r_json['data']['step']
swap = r_json['data']['swap']
uuid = r_json['uuid']
img_b64decode = base64.b64decode(img_str) # base64解码
file = open('test.jpg', 'wb')
file.write(img_b64decode)
file.close()
image = io.BytesIO(img_b64decode)
img = Image.open(image)
return img, step, swap, uuid
def up_data(uuid, answer):
url_up = 'http://47.102.118.1:8089/api/challenge/submit'
updata = {
"uuid": uuid,
"teamid": 58,
"token": "e422a424-0ab4-4b25-b973-923eb887ae42",
"answer": {
"operations": answer,
"swap": []
}
}
r_up = requests.post(url_up, json=updata)
r_up_json = r_up.json()
print(r_up_json)
图片分割处理
def split_image(imga, row_num, col_num, save_path): # 图片的分割保存
"""
:param imga: 带分割的图片
:param row_num: 分割的行数
:param col_num: 分割的列数
:param save_path: 图片存放文件夹
:return: None
"""
w, h = imga.size # 图片大小
if row_num <= h and col_num <= w:
print('original image info:%sx%s,%s,%s' % (w, h, imga.format, imga.mode))
print('开始处理图片切割,请稍候-')
ext = 'jpg'
num = 0
rowheight = h // row_num
colwidth = w // col_num
for r in range(row_num):
for c in range(col_num):
box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
imga.crop(box).save(os.path.join(save_path, str(num) + '.' + ext)) # 切割完图片保存
num = num + 1
print('图片切割完毕,共生成%s张小图片。' % num)
else:
print('不合法的行列切割参数!')
def get_img(save_path, img):
"""
:param img: 带分割的图片
:return: 空白格的初始位置
"""
# save_path = 'F:\imgs'
if not os.path.exists(save_path):
os.mkdir(save_path)
row = 3
col = 3
if row > 0 and col > 0:
split_image(img, row, col, save_path)
else:
print('无效的行列切割参数!')
找原图
def ergodic_file():
org_img_folder = './org'
# 检索文件
imglist = getFileList('C:/Users/Administrator/软工/无框字符', [], 'jpg')
print('本次执行检索到 ' + str(len(imglist)) + ' 张图像\n')
print(imglist)
z = 0
save_path = 'C:/Users/Administrator/软工/imgas'
for imgpath in imglist: # 每个图片都遍历一次 并开始进行对比操作
img_temp = Image.open(imgpath)
get_img(save_path, img_temp)
count_1 = 0
stop_flag = 0
print(imgpath)
for i in range(9):
for j in range(9):
imag1_path = 'C:/Users/Administrator/软工/imgs/%s.jpg' % i
imag2_path = 'C:/Users/Administrator/软工/imgas/%s.jpg' % j
ssim_text = image_similarity(imag1_path, imag2_path)
if ssim_text == 1:
count_1 = count_1 + 1
四、遇到的困难
自己没有规划好时间,还原算法卡傻了,最后接口关闭了gg了
唉没能成功解决
也是自己菜吧,希望测试组酌情给点分吧。
五、对队友的评价
队友自闭了博客上没有写对我评价
我对队友杨锋夏的评价:
优点:虽然同为菜鸡,抱团取暖,但他明显比我强得多
缺点:两个人时间都没有规划好,自闭
PSP表格:
|PSP(二人合计)|Personal Software Process Stages|预估耗时(分钟)|实际耗时(分钟)|
|----|-----|---------|---------|---------|
|Planning|计划|40|40|
|Estimate|估计这个任务需要多少时间|60|60|
|Development|开发|1500|900|
|Analysis|需求分析 (包括学习新技术)|600|900|
|Coding Standard|代码规范 (为目前的开发制定合适的规范)|120|60|
|Coding|具体编码|600|900|Code Review|代码复审|90|80|
后面的没成功就没写了