大家好,我是IT修真院深圳分院第九期的学员徐炜,一枚正直纯洁善良的前端程序员。今天给大家带来的是杀人和投票的业务逻辑上有什么区别。
一.背景介绍
杀人和投票的业务逻辑上有什么区别?
在做任务2-4杀人游戏时,我们会碰到很多逻辑上的问题,为实现杀人游戏各项功能,就需要厘清杀人和投票之间的逻辑区别。
二.知识剖析
1、广义上的义务逻辑——项目本身固有的一种品性,自然存在于项目内部,是项目具有的在某个业务领域内的逻辑,是该项目的核心和灵魂。 一个项目除界面和交互外的一切都可看作是广义业务逻辑。
2、狭义上的业务逻辑——等同于分层架构中“业务逻辑层”的职责,是项目中处理与业务相关任务的部分,一般狭义上的业务逻辑不包含数据持久化, 而只关注领域内的相关业务。
3、对于以上两种定义,我们不要割裂开来看,而要辩证统一的去看,这样,才能构建一个完整而辩证统一的“业务逻辑”概念。
三.常见问题
杀人和投票的业务逻辑上有什么区别?
四.解决方案
1、杀人和投票业务逻辑上的区别,实际上就是如何设置彼此的权限,以及定义游戏结束。
(1)首先要获取上个页面设置的玩家数量,和玩家身份;
(2)其次要定义死亡的状态,视图上:玩家头像变暗了(画个叉叉,写个死亡之类),且不可点击和其他操作。程序上:要清除该死亡角色的身份和号码。
(3)定义平民胜利规则:平民只有一种胜利方式,当杀手一方全部被投死的时候。
(4)定义杀手胜利规则:平民一方死光了,或者进入到下一轮的参与人数<=2时(因为此时为了活命,双方会互相投票,出现死循环,这种情况直接定义杀手胜利)。
(5)定义杀手杀人的规则;杀手杀人要满足,已死亡的对象不能再杀,被杀对象不是杀手,以及判定条件,跳转回法官台本页面还是游戏结束页面。
(6)定义投票环节的规则;投票环节要满足,已死亡的对象不能再被投票,被投票对象可以为杀手,以及判定条件,跳转回法官台本页面还是游戏结束页面。
2、杀人和投票页面区别之处
(1)杀人:点击杀手弹出提示框,杀手不能杀自己。
(2)投票:杀手,平民都可以点击。
(3)杀手:确定后天数不变,如果游戏结束天数+1。
(4)投票:确定后天数+1,如果胜利天数不变。
3、杀人和投票页面相同之处
(1)点击玩家提取序号,确定后存入死亡玩家数组,存活杀手或平民-1。
(2)不选择玩家不能离开。
(3)死亡玩家变色,且移除点击事件。
五.编码实战
实战演示demo,详见视频。
六.扩展思考
当杀手在杀手杀人页面赢得游戏时,缺少当天的投票信息,那么游戏结束页面的信息要怎么展示?
通过判断结果页面是从杀人页面还是投票页面跳转,执行不同的switch case语句,当页面从投票页面跳转时,执行case:0时的for循环, 生成完整的信息框。当页面从杀手杀人页面跳转时,执行case:1,此时就需要将最后一天杀人的情况单独罗列出来,就可以做到只展示杀人的情况。
七.参考文献
八.更多讨论
问题一:天数根据什么判断的 ?
进入杀人页面天数不变,投票之后游戏继续天数+1,杀完人游戏结束天数不变,投票后游戏结束天数不变。
问题二:怎么判断游戏结束?
杀手胜利规则:平民一方死光了,或者进入到下一轮的参与人数<=2时。
问题三:怎么判断游戏结束是从哪个页面跳转过来的?
感谢高昕师兄,此教程是在他们之前技术分享的基础上完善而成。
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~