发表于: 2017-06-20 21:55:49

1 924


今天主要还是进行任务4,但是实际进展不是很快

1. 目前为止完善了全部对象存储的属性

roleStatus[i] = {};
roleStatus[i].num = i+1;
roleStatus[i].identity = roles[i];
roleStatus[i].status = "alive";
roleStatus[i].day = 1;

2. 昨天写的页面发现可以一次杀死多个人,这次改在确定杀死之前做了一个去重,为玩家div添加一个click,点击触发函数

if (roles[this.index] == "杀手") {
   return false  //确保点击杀手无任何作用
} else {
   if (victim != undefined) {
       //先检查有没有被选中的人,如果有则将其状态颜色还原
  cards[victim].style.background = "#fbb435";
      roleStatus[victim].status = "alive";
   }
   $(this).css("backgroundColor","#ff0000");
   victim = this.index;
   roleStatus[this.index].status = "dead";
   console.log(roleStatus);
}

定义受害人为“victim”,然后运用this(选中当前的对象)。先是通过确定当前玩家身份是杀手时,无法进行有效点击,防止杀掉杀手,然后先执行

  $(this).css("backgroundColor","#ff0000");
   victim this.index;
   roleStatus[this.index].status "dead";

选中部分的玩家div会改变背景色,受害者victim被赋值为当前选中部分的对象的编号,玩家状态由alive变为dead

但是如果此时点其他的玩家div,victim就不为未定义具体值的状态,触发if判断,背景色和玩家状态被重置

3. 最终进行页面的跳转

for (var c=0; c<roles.length; c++){
   roleStatus[c].day++;
   sessionStorage.setItem("playerStatus",JSON.stringify(roleStatus));
   window.location.href = "js-2-decode.html";
}

所有人天数加1,全部对象的属性被存储,但是这时要进行的一个判断是,必须杀人才能进行页面跳转

4. 写了跳转后页面较简单的部分,但是玩家死法分为实际投票杀死和杀手杀死,为防止重复被杀需要一个去重,还有最后跳转到结果页面时对输赢的判断需要完成

明天计划继续任务4,json感觉不理解的比较多,需要多看看

今天主要遇到了一个小问题

if (victim == undefined) {
   alert("请杀死一个平民");
}

未进行具体值定义时会显示undefined,但是一个等号是赋值,两个等号才是具体值判断,因为这个细节语句判断出了很多问题

收获主要还是熟练了js里面改变css,插入html元素,触发函数等的应用



返回列表 返回列表
评论

    分享到