发表于: 2017-01-24 23:54:53
4 1233
用了一天的时间,将整个任务剩下的部分做完了,所以任务三的日报就忽略了哦。
首先说一下我的作品的一些特点。
1.ui自己画的,很简单,但是让我对css熟悉了很多,知道了一些关于webkit,input range,自适应的知识。
2.我因为没有服务器,所以把整个作品放在github的一个文件夹里了,如果想跑一下我的程序,我得说一声辛苦了,您得在相对路径里面来回跳转。
3.不同页面的参数传递我选择的是localStorage.这也是师兄给我的启发。当然了选择有很多,比如cookie,还有sessionStorage。cookie的特点是小,只有4kb,咱平时自动登录就是靠的cookie,您想写爬虫也离不开cookie,它能携带信息,信息在?之后。sessionStorage和localStorage很像,大小有4mb左右,但是local的信息如果你不手动删除,它是一直保存在local的;但是session会在你关闭页面后删除信息,这个做后端的同学肯定更熟悉。
然后我讲讲这个小游戏主要的设计思路吧。
1.选角色:根据人数的不同,杀手的数量也会不一样。我先创建一个全部是0的数组,然后随机位置赋值1代表杀手。这个随机的概率是平均的,因为我用的是floor后的random。然后点击确定跳转到身份确认(当然没选角色不能跳哦)。身份信息保存为一个由0和1组的字符串,然后在每个页面解析成数字数组。
2.身份确认:我选择在用js来更改一个div的html和css。这样可以简单的把玩家的号码信息和身份信息表达出来,页面只用了一个,有一个按钮来控制身份一直传下去。当传到最后一个人时,页面会显示游戏开始,点击GO继续哦。
3.上帝确认:这个页面,是上帝视角,玩家被扔到了桌子上,默认显示序号,鼠标放上去会变成身份信息。我使用mouseover和mouseout来控制的。然后点击go,信息会变成一个游戏的简单介绍。再点击go跳转到游戏环节。
4.游戏环节:最后的一环,js也是最多的一环,不过逻辑很简单。我把游戏分为三个状态:天黑杀人,天亮骗人,最后抗推。这三个状态是循环的,所以我在进入第一个状态后,会让这个状态的变成false,代表我进入这个状态了。然后如果结束状态,打开下一个状态的开关。这样连环绑定,确保每次只有一个环节在进行。然后讲些细节,首先杀手杀人的时候,我设定的是不可以自刀的。因为md我玩狼人杀被骗过药好气,所以我不允许自刀(而且也没奶的),同时狼人在没点选目标的时候,是不可以go的,我会有文字提示,并用settimeout控制3秒后删除(而且我用cleartimeout绑定了哦)。然后是欺骗装逼环节,没什么内容,具体遗言呀什么的自己脑补吧,直接点go就可以了。然后抗推阶段,跟杀人没什么区别,函数都用的一个(只不过分了白天晚上),但是抗推有些限制,首先你得推一个,不选会有文字提示;然后你不能推个死人出去(过分了啊2333
)。基本上跟杀人没什么区别。然后是胜利判定,当在夜里时候,杀手只比愚民少一个人的话,那么杀手就赢了。因为第二天抗推票型55开,又没有警长buff,所以就直接进入黑夜了咯,然后再来一刀就结束了,玩过的肯定都明白我就不多说了。愚民想赢就一个条件,把杀手投出去,很简单。然后每个状态(天黑,天亮)绑定一个胜负判定,保证不会有比如投出去最后的杀手还能进入下一个晚上的bug。然后每个环节的文字说明,比如第几天,谁被砍啦,谁被拉出去抗推啦,我都push到了一个数组里了,然后总结的时候循环print了。大概就是这么多,逻辑很单一。
最后讲一下深度思考(我的理解)。
1.task2:洗牌算法指的是什么--就是怎么给随机咯,你可以在数组的随机位置标记,也可以在push的时候随机。我选择的是前面那种,当然算法有很多,选个简单,概率均等的就行。
2.task3:是否需要两个页面是否需要复用--我选择的是用一个页面完成的这个任务,因为就看个身份然后pass,直接改html就可以呀。所以就懒得写第二个网页了(对,就是懒)。
3.task4:杀人和投票的业务逻辑上有什么区别?没区别,就我多年狼人杀经验,杀人,抗推,都是瞎xx选的(不是我)。话说又回来了,在代码方面,我觉得也没什么差别呀,本来这个小游戏的杀人就是票出来的嘛,你就说是不是嘛。
好吧,肤浅的回答了几个问题(实在是困了懒得写了),欢迎交流哦(师兄)。
不知道程序还有没有bug或者逻辑判断不够到位的地方,师兄求教育哦。
最后师兄帮我指点一下下一个任务呗,大概看了一下,是ajax,我可以自己给自己post,get嘛?我需要一个关键词的火力。
_(:3 」∠ )_
评论