1.背景介绍
业务逻辑是什么?
让你实现一个功能,给你两个数,让你获取它的和,你所写的如何才能获得任意给定的两个数的和,这个程序实现过程称为业务逻辑。
就像家里规矩–“吃饭前必须洗手”“有客人来要起立”-就是业务逻辑的生活化实例。
2.知识剖析
杀人和投票的业务逻辑分别是什么?
杀人页投票逻辑
一.玩家无操作时:1.打印出每个玩家的身份方框。2.标记出已经出局的玩家。
二.选择杀死玩家时:1。点击选中玩家的方框时,给出相应被选中提示。不可以选择已出局玩家。杀手不可以杀死同伙。3.更换选择玩家时,该玩家状态标记为被选中,其他玩家都为未选中。
三.确认杀死玩家时,对该玩家的对象属性更改。例如生命属性更改为killed,并记录死亡天数。
投票页的业务逻辑
一.玩家无操作时:1.打印出每个玩家的身份方框。2.标记出已经出局的玩家。
二.选择投死玩家时:1。点击选中玩家的方框时,给出相应被选中提示。不可以选择已出局玩家。3.更换选择玩家时,该玩家状态标记为被选中,其他玩家都为未选中。
三.确认杀死玩家时,对该玩家的对象属性更改。例如生命属性更改为voted。记录该玩家死亡天数。
四.每次投票结束后,天数+1.
五.判断游戏是否结束。
3.常见问题
杀人和投票的具体的业务逻辑上有什么区别?
4.解决方案
实际上就是如何设置彼此的权限,以及定义游戏结束。刚才讲过,程序实现过程称为业务逻辑处理。
程序实现的过程——
1.获取上个页面设置的玩家数量,和玩家身份
如何定义死亡
具体场景具体定义,比如用户眼中:头像变暗了(画个叉叉,写个死亡之类),不可点击和其他操作。程序上:要清除他的身份和号码。
杀手怎么杀人?
杀手杀人要满足当杀手人数过多时,被杀对象不是杀手,以及活着进入到杀人环节
投票要怎么投死人?
投票也要满足少数服从多数的原则,要考虑到当票数相等时会出现什么情况?
1,是要进入下一个环节。
2,或者是两个被投票者双双出局。
3,还是不许出现这种情况, 必须要决定投一个人,否则判定杀手胜利。
——这些都是要在写程序之前说清楚,然后用程序实现的。
如何定义游戏结束。
因为写的是简易版的杀人游戏,所以这里就讨论简易版的相关规则,
平民胜利规则:平民只有一种胜利方式,当杀手一方全部被投死的时候。
杀手胜利规则:平民一方死光了,或者进入到下一轮的参与人数<=2时(因为此时为了活命,双方会互相投票,出现死循环,这种情况直接定义杀手胜利)
更多讨论
1、任务中的状态信息如何保存
最简单的方法是使用数组对象,用数组对象创建life,day,vote,kill等状态信息。有同学使用的是二维数组,这种方法也可以,但比较麻烦。
2、业务逻辑如果很复杂,怎么办,有没有一些技巧
尽量写共用的方法,相似的逻辑,尽量用一个方法装起来。读取数据时,尽量一次读取出来。尽量共用同一个逻辑
3、任务中存在的bug
设定好人数后,点击查看页后跳转到法官页。编号了超出设定的人数。因为只要点击,函数就执行一次。将函数内的判断跳转到法官页的逻辑放在函数内的前面
ptteng.github.io/PPT/PPT/js-04-service%20logic%20differences%20betweenkill&vote.html#/