发表于: 2020-05-19 23:10:57
1 2015
今天完成的事情:
根据昨天拆分的任务,进行步骤学习。然后尝试些js,jQuery修复了部分代码。主要是任务难点全部分析完了,写到了杀人页面,但是保存还是没研究出来。
→ 点击开始游戏按钮,生成页面第一天
已完成跳转页面的初步写法,就是关联哪个元素来生成未定。初步觉得应该关联确定点击按钮,根据死亡人数进行跳转,若死亡人数未增加则不跳转?但是如何使每次点击只会产生一个死亡人数还未知。
→ 按照步骤 1,杀手杀人,2,亡灵发言 ,3,玩家交流,4,众人投票。
按照顺序点击才能正常游戏,否则跳出提示框,实现方法预计和获取下标的方法相同,若点击下标>上个下标+1,则跳出提示。
→ 点击杀手杀人 → 跳转回格子页面 → 点击格子(显示刀子图片,变色)点击多个盒子也只显示一个
类似hover效果?点击盒子只显示一个刀子的话,感觉和hover+btn的效果有点像,而杀手杀人跳转,点击杀死,这个暂时没有确定具体实施方法,获取下标的方法还没学,但是可以肯定的是获取已死亡的格子的下标进行储存数组操作。并且需要先辨别杀手的格子,在杀死回合不允许杀死杀手。
→ 点击确定杀死所选的格子代表的人物,输出记录到天数页面,在步骤下。
这个应该是获取格子下标的身份,动态的输出文字也就是之前保存的打乱身份数组的文字
→ 进入步骤页面,需点击亡灵发言,跳出弹框,若不按顺序点的话跳出提示。步骤2和3应该点击后跳出弹框。
写一个提示框隐藏起来,按条件触发显示,点击确定取消,再次隐藏提示框,和页面2差不多。
→ 步骤4进入杀人状态,再次点击杀死一个人并且输出文档,然后跳转,生成第二天。
同样是获取下标储存,但是没有杀死的限制。
→ 第二天,第一天留在第二天上面,并且可以点击隐藏显示,第二天在第一天下面,然后依然是4个按钮按顺序,后续以此类推。
进入第二天的话,按照思路应该是根据确定的点击次数进入,或者根据杀死的人数进入?死人数量若能整除2,进入新一天,并且使下标小于新生的天数样式进入displaynone状态?还没实现过未知具体方法。
→ 胜利条件:设置如果杀手人数>=平民 || 杀手人数==0 则确定按钮变成游戏结束按钮,跳转结束页面。
那么就需要辨别杀手身份和平民身份了,获取身份下标存入数组?若被杀死则取出数组,以此进行数组的长度比较。但是如何变更该身份的死亡状态莫得思路。
之前的杀手数量设置算错了,应该是math.floot((value)/4)。除了8这个数是例外的1,可以单独写一个if(value=8;a=1;)a是杀手人数,其他的都符合这个规则,9到11为2,12-15为3,16-18为4个
重新设定了一下计算方式简化了大量代码。
原本是每一个阶段设定一次,塞一次文字,这代表着提前计算好变量多重要。。。
→ 其中几个游戏规则:被杀的人不可再次选择杀死,杀手不可杀死杀手
同为辨别身份,暂时没思路。
开始学习:
写了个demo,是成功的,
实现原理研究了下,先使用queryselectorall获取该元素的全部节点,然后遍历数组长度
但是为什么 btns【i】点击就等于数组下标还是有点没理解,按照我的理解的话,i 此时点击的话,按照循环,应该是输出0?还是6?
btns是 所有按钮 的dom节点,此时 i 代表其中哪个按钮如何确定?点击某按钮时,首先是返回的 按钮 数组长度?假设我选择了第一个按钮,此时输出 的是0,是否理解为,按钮组此时点击的长度为 【1】?i=0,输出0?
想了想,我失了智,原来是先赋予了 按钮数组 下标,首先i =0,然后i<数组长度 自增,写btns【i】时,因为遍历数组长度,从0开始所以相当于赋予了按钮下标,因为btns是全部按钮,此时该btns可以理解为btns【0-5】共6位,此时已经把所有按钮遍历赋予了【i】下标编号,然后btns【i】.onclick=function(){console。log}也就是输出点击该按钮的下标而已。也是被后面的function误导了。
解析:遍历数组,赋予索引值=i,在js里index属性相当于赋予元素一个索引值,好方便区分元素,
后面的点击事件,这个按钮【i】输出this(调用他的按钮)的索引值。而按钮根据遍历已赋予了下标。原理同第一个
解析:首先是没见过的foreach属性:先百度
此时数组也是遍历,通过foreach,其中的e代表的元素?未理解。.
度娘解惑:
也就是说
默认定义e是一个dom元素,i是索引。
闭包理解为函数套函数,输出内部的子级函数,可以在外部再次调用,且数据不会被清空重新执行。虽然没用过还是有些不明白。
首先是使用jQuery优化了下生成盒子的代码。参考了一下师兄的代码,使用eq()来获取下标,append进行生成,html输出文字。
开始使用原生js写的,一个一个赋予classname,一个一个塞进父级。
接下来,开始写js。根据确定按钮点击次数进行变更文字和跳转。
先设置了一个变量记录点击确定按钮次数,初始值为零,按钮点击次数=0时,文字输出为开始游戏。
点击则跳转进天数页,想了下,这个方法并不合适,因为开始游戏界面的话,是不能点击格子变色的,也不能弹出刀子图片,暂时不清楚如何只使用一个页面写,也许是写一个透明的div覆盖住main内容区域?当点击次数大于0时该区域display:none?
先设定跳转页面。打算直接进入天数页面。杀人页面再复制一个
天数页面第一天生成姑且是写完, 默认生成第一天。暂时还不清楚按照什么条件来增加天数进行生成并隐藏。
四个步骤首先获取了四个按钮的dom节点,点击变色还没写
按钮如何设置只能点击一次:
设置属性disabled,搜索了下语义是残废,废弃,也就是点击后废弃该属性。
学会如何获取下标,接下来试着如何标记各个格子,
期间出现一个小问题,把获取父级节点的声明写在了生成盒子前面导致报错说是无法使用属性index于未定义上。看了半天才发现是排序问题。写前面导致未产生盒子的时候就开始获取,所以是未定义状态。
如何记录按钮的点击状态目前没思路。根据点击获取的下标来确定盒子的死亡状态?只有一个盒子变色?遍历到是知道,但是点击该盒子变色不清楚如何实现。跳转页面的点击变色改变人物死活的状态,暂时也不清楚。
根据师兄的指导,学会使用jQuery的$(this).index对象,配合eq,可以选择子级盒子。这玩意我搜了半天没搜到相关信息。。可能是我搜索方法不对,有待改进。
明天计划的事情:
关于储存死亡信息,变更对象自定义的数据,产生新的天数还需要研究一段时间,思路不够清晰。明天如果能把保存,死亡塞进数组,生成天数解决的话,任务就基本完成了。
遇到的问题和收获:
可以说是巨大收获吧,解决了困扰几天甚至逃避了的问题(逃避时直接把数组再写一遍。。)
调整页面的时候,如何在外部引用函数生成的数组,先在外部声明一个变量,然后在函数内部变量=生成的数组,也就是赋值。
数组未定义时是undefined状态,该状态也可以拿来进行判断。
大部分问题在今天做的事上写了,主要是对于js的对象,储存,建立数组来使用这些东西不够熟练,很多地方没有思路,对于js的属性应用也确实太肤浅了些。js目前常用的属性熟悉一点之外,新的知识都是遇到需要的才进行搜索。
剩下的问题也就是如何储存死亡,生存,辨别杀手,平民,根据什么进行生成天数,以及如何使按钮点击一次便记录该按钮失效了。
评论