杀人和投票的业务逻辑上有什么区别

大家好,我是IT修真院武汉第10期学员,一枚正直、纯洁、善良的前端程序员。

今天给大家分享一下,修真院官网任务js-4,深度思考的知识点——杀人和投票的业务逻辑上有什么区别。

1.背景介绍

什么是业务逻辑?

           比如你开发了一个收款系统,一件商品卖10元钱。有人买了10个就是100元。这个很有逻辑。但是这时候客户说了:“不行,我们搞活动买10个打8折,所以总价是80元”,这就是业务逻辑。 这种逻辑和程序员可以推断的常理来说的逻辑不同,比如,一个商品的价格保存以后,除非有人改动,下次读取应该保持一致,比如不能把一个价格除零。业务逻辑是由客户的需求所决定的。另外经常这种逻辑是容易改动的。在程序里用专门的模块或者层来处理业务逻辑,可以隔离这种变化对程序其它部分的影响。

2.知识剖析


杀人页面

上图就是杀人页面,业务逻辑有如下几个:

首先是样式渲染,因为第二天进入杀人页面的话,有的玩家已经死亡,我们需要用特殊的样式或状态标记出来。

然后杀人时的标记(上图的红框跟“刀”的图片)

最后点击“确定”按钮时的逻辑:

点击“确定”按钮时的逻辑:

如果杀手没有杀人,则弹出警告“请杀人”

如果被标记的人是“杀手”,则弹出警告,“不能杀同类”

将要杀的玩家状态改为“死亡”

判断游戏是否结束,如果贫民为0的话游戏胜利游戏结束,跳转结果页面,否则游戏继续

跳转到“法官日志”页面

投票页面

投票页面的逻辑:

一开始也是渲染死亡玩家的样式

标记想投死的人

然后点击“确定”按钮的逻辑

点击“确定”按钮的逻辑:

先判定是否没有标记被投玩家,如果是则弹出警告框“请投票”

然后将被投的玩家状态改为“死亡”

判断游戏是否胜利,如果平民的数量跟杀手数量相等,则“杀手胜利”,跳转结果页面,如果杀手数量为0,则“平民胜利”,跳转结果页面,否则游戏继续

跳转到“法官日志”页面


3.常见问题

这两个页面的区别主要在游戏结束的判定上,由于杀人不能杀自己人,所以在杀人页面平民是不可能胜利;在投票页面每个人都有可能死亡,所以“杀手”跟“平民”都是有可能胜利的。

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

详情请看:

视频链接

PPT链接

问:杀人页面如何知道谁“死亡”?

答:写一个数组对象,每个身份牌都加一个属性 state:“alive”,如果被杀了,就更改该玩家的state属性为“dead”。

问:如何一开始就知道死亡的玩家?

答:用for循环,将每个state为“dead”玩家样式更改一下就好了。

问:如何知道没有玩家被杀或被投?

答:点击身份牌的时候就这个玩家一个状态,如果全场都没有这个状态就说明没有进行操作,就弹出警告框。

你可能感兴趣的:(杀人和投票的业务逻辑上有什么区别)