结对编程作业
姓名 | 分工 | 博客链接 |
---|---|---|
施可婳 | 原型设计,前端,游戏逻辑,本地对战 | |
陈静 | 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以及接口的使用