分享人:徐炜
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
在做任务2-4杀人游戏时,我们会碰到很多逻辑上的问题,为实现杀人游戏各项功能,就需要厘清杀人和投票之间的逻辑区别。
广义上的义务逻辑——项目本身固有的一种品性,自然存在于项目内部,是项目具有的在某个业务领域内的逻辑,是该项目的核心和灵魂。 一个项目除界面和交互外的一切都可看作是广义业务逻辑。
狭义上的业务逻辑——等同于分层架构中“业务逻辑层”的职责,是项目中处理与业务相关任务的部分,一般狭义上的业务逻辑不包含数据持久化, 而只关注领域内的相关业务。
对于以上两种定义,我们不要割裂开来看,而要辩证统一的去看,这样,才能构建一个完整而辩证统一的“业务逻辑”概念。
业务逻辑就是客户的逻辑
在 N 层架构的系统中,经常会提到这些名词。
表现层(Presentation layer) 业务逻辑层(Application layer) 数据访问层(Data layer) 在一个系统开发过程中,后台做一些处理, 如果成功,则跳转到 success_xxx 页面,如果失败,则跳转到 fail_xxx 页面,如果系统抛出了异常,则跳转到 5xx 页面, …… 这些属于页面逻辑
杀人和投票的业务逻辑上有什么区别?
杀人和投票业务逻辑上的区别,实际上就是如何设置彼此的权限,以及定义游戏结束。
1、首先要获取上个页面设置的玩家数量,和玩家身份
2、其次要定义死亡的状态,视图上:玩家头像变暗了(画个叉叉,写个死亡之类),且不可点击和其他操作。程序上:要清除该死亡角色的身份和号码。
1、定义平民胜利规则:平民只有一种胜利方式,当杀手一方全部被投死的时候。
2、定义杀手胜利规则:平民一方死光了,或者进入到下一轮的参与人数<=2时(因为此时为了活命,双方会互相投票,出现死循环,这种情况直接定义杀手胜利)
3、定义杀手杀人的规则;杀手杀人要满足,已死亡的对象不能再杀,被杀对象不是杀手,以及判定条件,跳转回法官台本页面还是游戏结束页面。
4、定义投票环节的规则;投票环节要满足,已死亡的对象不能再被投票,被投票对象可以为杀手,以及判定条件,跳转回法官台本页面还是游戏结束页面。
1、杀人:点击杀手弹出提示框,杀手不能杀自己;
2、投票:杀手,平民都可以点击;
3、杀手:确定后天数不变,如果游戏结束天数+1;
4、投票:确定后天数+1,如果胜利天数不变。
1、点击玩家提取序号,确定后存入死亡玩家数组,存活杀手或平民-1;
2、不选择玩家不能离开;
3、死亡玩家变色,且移除点击事件。
当杀手在杀手杀人页面赢得游戏时,缺少当天的投票信息,那么游戏结束页面的信息要怎么展示?
通过判断结果页面是从杀人页面还是投票页面跳转,执行不同的switch case语句,当页面从投票页面跳转时,执行case:0时的for循环, 生成完整的信息框。当页面从杀手杀人页面跳转时,执行case:1,此时就需要将最后一天杀人的情况单独罗列出来,就可以做到只展示杀人的情况。
by高昕|徐炜