发表于: 2017-06-26 23:32:13
2 917
今天主要做的是任务4的部分。
明天计划确定一下任务4是否还有bug,然后开任务5。
1. 首先是将杀人天数计算更改了
原本是杀人页面杀人后,剩余玩家存活天数加1,后改为在投票页面后存活天数加1,这样相当于每一天都有两个玩家死亡,一个是被杀死,一个是被投票杀死
for (var x=0; x<playerStatus.length; x++) {
if (playerStatus[x].status == "alive") {
playerStatus[x].day++;
}
sessionStorage.setItem("playerStatus",JSON.stringify(playerStatus));
window.location.href = "js-2-decode.html";
}
如上,跳转页面并储存当前玩家状态
2. 最终完善了全部玩家的身份和状态并计数
var aliveFolk = 0;
var deathFolk = 0;
var aliveKiller = 0;
var deathKiller = 0;
function addPlayer() {
for (var i=0; i<playerStatus.length; i++) {
if (playerStatus[i].identity == "平民" && playerStatus[i].status == "alive") {
aliveFolk++;
} else if (playerStatus[i].identity == "平民" && (playerStatus[i].status == "dead"||playerStatus[i].status == "voted")) {
deathFolk++;
} else if (playerStatus[i].identity == "杀手" && playerStatus[i].status == "alive") {
aliveKiller++;
} else if (playerStatus[i].identity == "杀手" && (playerStatus[i].status == "dead"||playerStatus[i].status == "voted")) {
deathKiller++;
}
}
var playerFolk = aliveFolk + deathFolk;
var playerKiller = aliveKiller + deathKiller;
$(".killer").append(playerKiller);
$(".folk").append(playerFolk);
}
addPlayer();
如以上代码,将两种身份的玩家可能的状态都进行数量叠加,将最终结果插入html页面
3. 将玩家死亡天数和死亡状态存入数组
var allDay = [];
var day =1;
for (var e=0; e<playerStatus.length; e++) {
for(var a=0;a<playerStatus.length;a++) {
if (playerStatus[a].day == day) {
if(playerStatus[a].status == "dead"||playerStatus[a].status == "voted") {
allDay.push(playerStatus[a]);
}
}
}
day++;
}
console.log(allDay);
首先定义一个空数组,玩家死亡天数从1开始,定义day为1,如上代码,按照死亡天数是第一天的分别将被杀玩家(“dead”状态)和被投票杀死玩家(“voted”状态)分别加入数组中,然后day值增加1,继续依次按照天数添加内容至数组
4. 一键生成结果页剩余细节
var b = 0;
function addDetails() {
for (var a=0; a<Math.ceil(allDay.length/2); a++) {
$('.details').append(
'<div class="row">' + '<div>' + '<span class="time1">第' + (a + 1) +
'天</span>' + '<span class="time2">0小时07分</span>' + '</div>' +
'<div>晚上:' +
allDay[b].num + '<span class="add-vic">' + "号被杀手杀死," + "身份是" + '</span>' + allDay[b].identity +
'</div>' +
'<div>白天:' +
allDay[++b].num + '<span class="add-vote">' + "号被投票杀死," + "身份是" + "</span>" + allDay[b].identity +
"</div>" + '</div>'
);
b++;
}
}
addDetails();
结果页细节是按照第一天第二天这样依次增加的,所以,将数组中的数依次添加就可以。
首先,定义b=0,所以allDay[b].num就是取自数组第一项的编号,即第一天被杀玩家的编号,allDay[b].identity即该玩家身份,这时需要在“白天”的后面添加数组第二项,allDay[++b].num即为allDay[1].num,而这时经过++b计算,b=1;所以allDay[b].identity即为allDay[1].identity,插入了数组第二项玩家身份
最后进行b++运算,添加剩余信息
5. 考虑到奇数个玩家的问题,需要向上取整 a<Math.ceil(allDay.length/2)
收获就是i++和++i的区别和实际应用
++是递增操作符,使用时可以分为前置型和后置型,++i即为前置型,i++为后置型。执行前置递增操作时,变量的值都是在语句被求值前改变的。++i+1,那就是i先自增,然后计算表达式的值。而i++ +1 那就是先计算i+1,求出语句的值,然后i再自增。
评论