发表于: 2017-04-06 09:49:57
1 713
今天完成的任务
1.任务二完成
2.任务三页面
明天的计划
1.任务三的js
遇到的问题
1.乱序,我一开始的想法是遍历数组,同时取0-1随机数,当随机数满足一定条件时,就将该位置的元素赋值为杀手,然后判断杀手的个数,实际操作下来才发现,随机数有可能遍历数组结束也不会产生一个符合条件的数。。。果然随机
修改方案,在前面遍历数组赋值的时候,就直接将前n位赋值为杀手。如下
for (j=0; j<playernum(); j++) {
if (j>killer-1) {
role[j]='平民';
} else {
role[j]='杀手';
}
}
然后乱序的思路是去看了网上关于洗牌算法/Fisher-Yates shuffle(https://gaohaoyang.github.io/2016/10/16/shuffle-algorithm/#top)
for (i=0; i<playernum(); i++) {
var randomNum=Math.floor(Math.random()*(playernum()));
var hold=role[randomNum];
role[randomNum]=role[i];
role[i]=hold;
}
取随机数randomNum,范围是0-数组长度-1,交换role[randomNum]和role[i]的值,达到打乱数组的效果。
出现了总数设定为大的数值后,小长度的数组无法正确显示的问题,貌似是因为playernum()这个函数没能实时获取,所以在遍历数组之前,获取下当前的palyernum()值,问题解决。
function define() {
playernum();
role.length=playernum();
for (j=0; j<playernum(); j++) {
if (j>killer-1) {
role[j]='平民';
} else {
role[j]='杀手';
}
}
return role[j];
}
2.被一个传参搞了好久,看了url又看了json,结果没看懂.。。。
收获
以上。
评论