结对编程作业

一、项目及分工

我的博客链接: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|

后面的没成功就没写了

posted @ 2020-10-19 22:55  柑橘柠檬汁  阅读(72)  评论(0编辑  收藏  举报