发表于: 2017-04-10 23:55:49
1 557
今天完成的事情:任务四写好了一半.
明天计划的事情:肝任务4
遇到的问题:点击选中玩家的时候的判断,不是根据它的表面现象来判断,一开始写的是根据他的文本节点是什么,或者是根据他的颜色,今天把对象学会之后,需要根据对象的属性来判断,如果他是活人,那么可以杀,如果身份是狼人,那么杀不了。
看了工厂模式,刚写就遇到了要怎么一次显示多个玩家身份,然后重新写了个对象,
对象用XXX= new Object表示也可以,用一个{}来表示也可以,然后为了实现让对象的属性变成每个玩家的属性,就写在for循环里。
for (j=0; j<x.length; j++){
person[j] = {};
person[j].life = "alive";
person[j].identity = x[j];
}
写判断条件的时候,要实现点击哪个就获得哪个,给对象加¥(this).index(),this可以获取到点击的是哪个,index()可以获得this点击到的元素与之对应的对象
if(person[$(this).index()-1].identity ==="杀手")
这里我减了1是因为index根据this的序号来进行的,this从0开始,但是index从1开始, 当我点击第一个DOM节点的时候,this这时候是0,但是index是1,所以这里我要减1,来让它和DOM节点同步。
点击一个盒子再点击别的盒子,之前的颜色要恢复,用重置所有的办法肯定不好使,因为到时候有人死了,死人也会恢复。
这里学会了eq的用法,eq()括号里的参数,是第几个dom节点,然后先var一个变量,然后这个变量=点击的DOM节点和index
Num=$(this).index()-1;
然后这里把改变eq()的状态写在第一条
else{
$(".box2").eq(Num).css("background-color","#f5c97b");
$(this).css("background-color","pink");
Num=$(this).index()-1;
person[Num].life="dead";
}
第一条代码是让eq()的DOM节点恢复色,第一次点击的时候,Num是空,所以不执行,然后第二条代码让点击的变色,第三条代码给Num赋值。
第四条代码让他去死。
底部按钮跳转要加个判断条件,不然会出bug,再没有选中玩家的时候,点的时候也会跳转。
下一个页面要输出几号玩家死了,我直接读取Num的值,来输出,但是后面的黑夜揭秘好像要把每个死了的人都输出,用值好像不行,要用数组,还没想好。
再下个页面要让已经死了的人变色,还不知道怎么实现
想整个游戏流程都可以用键盘事件来实现,
$(".box2").on("click", function ()
但是这样写的函数,没有函数名字,是直接绑定了DOM节点的,然后我之前键盘事件都是写在HTML<body>标签里,来做全局键盘事件,碰到这个不知道怎么写,所以把函数换成了普通的函数,然后在HTML里来调用实现。
找机会学习一下键盘事件在JS里怎么写。
收获:学会了使用对象和对象的属性,还有this和index和eq的用法。
评论