结对编程作业

仓库地址

姓名 分工 博客链接
施可婳 原型设计,前端,游戏逻辑,本地对战
陈静 AI及接口使用

一、原型设计

原型链接

原型开发工具

墨刀

原型设计思路

封面

主页部分,可选择游戏模式,分本地,人机在线三种

二、原型设计实现


代码实现思路

  • 网络接口的使用

    本次作业中采用XMLHttpRequest来实现网络接口,并利用Chrome浏览器提供的开发者工具进行调试

  • 代码组织与内部实现设计
    游戏大致流程如下

  • 说明算法的关键与关键实现部分流程图

  • 贴出你认为重要的/有价值的代码片段,并解释

//AI决策模块
function makingDecision(player)
{
    var flag = 0;
    function judge()
    {
        var x = false;
        if (putArea.top.suit = S && player.handPoker[0].length != 0 && player.handPoker[1].length == 0 && player.handPoker[2].length == 0 && player.handPoker[3].length == 0)
            x = true;
        else if (putArea.top.suit = H && player.handPoker[0].length == 0 && player.handPoker[1].length != 0 && player.handPoker[2].length == 0 && player.handPoker[3].length == 0)
            x = true;
        else if (putArea.top.suit = C && player.handPoker[0].length == 0 && player.handPoker[1].length == 0 && player.handPoker[2].length != 0 && player.handPoker[3].length == 0)
            x = true;
        else if (putArea.top.suit = C && player.handPoker[0].length == 0 && player.handPoker[1].length == 0 && player.handPoker[2].length == 0 && player.handPoker[3].length != 0)
            x = true;
        return x;
    };

    
    if (player.empty())
    {
        let index = Math.floor(Math.random() * pokerGroup.pokers.length);
        return ([flag,pokerGroup.pokers[index]]);
        
    }
    else if (judge())
    {   
        let index = Math.floor(Math.random() * pokerGroup.pokers.length);
        return ([flag,pokerGroup.pokers[index]]);
    }
    else
    {
        flag = 1;
        let tempArray = new Array();
        for (let i = 0; i <= 3; i++)
        {
            tempArray[i] = [].concat(player.handPoker[i]);
            }
        function sortLence(a, b){
            return b.length - a.length;
        }
        player.handPoker.sort(sortLence);
        let tempPoker = player.handPoker[0][0];
        if (tempPoker.suit == putArea.top.suit)
        {
            if (player.handPoker[1].length != 0)
            tempPoker = player.handPoker[1][0];
            }
        for (let i = 0; i <= 3; i++)
        {
            player.handPoker[i] = [].concat(tempArray[i]);
        }
        return ([flag,tempPoker]);

    }
    
};
  • 性能分析与改进

    作业中实现的AI不够智能,只能基本模拟人的决策过程

  • 描述你改进的思路

    希望能够用到更加高级的算法

  • 展示性能分析图和程序中消耗最大的函数

  • 展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路

贴出Github的代码签入记录,合理记录commit信息

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

1.上网查资料
2.自己慢慢调试

评价你的队友

施可婳:1.值得学习的地方:在算法部分可以帮助思考,帮忙找到新思路,开始我对于游戏规则有理解有错的时候及时纠正了想法

陈静:1.值得学习的地方:很细心2.需要改进的地方:希望能多和我交流

提供此次结对作业的PSP和学习进度条(每周追加)

PSP表格

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

三、心得

陈静:这次作业对我来说难度很大,通过这次作业,学习了JavaScript以及接口的使用

posted @ 2021-10-24 21:47  -阿临-  阅读(58)  评论(0编辑  收藏  举报