发表于: 2017-06-26 23:32:13

2 919


今天主要做的是任务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再自增。



返回列表 返回列表
评论

    分享到