精神内核不错澳门新葡8455最新网站,杀人和投票

作者:影视影评

画面没说的了。精神内核也不错。
片子说,不杀人的人也会杀人。
不杀敌人你就在杀自己人。
人在战争中只有一个任务,就是赢得胜利。
澳门新葡8455最新网站,个人服从于整体。
人和社会的关系,和战场上人与胜利的关系是一致的。
有时候生和死的意义相同。
生者要担负起死者的意志。

**大家好,我是IT修真院北京分院第27期学员,一枚正直善良的前端程序员今天跟大家分享一下前端知识点。**

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

**今天讲下深度思考中的知识点**

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

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

1.背景介绍

什么是业务逻辑?

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

1.背景介绍

业务逻辑是什么?

不同的项目有不同的功能,不同的功能需要不同的实现,实现这些核心功能的代码就叫业务逻辑。

2.知识剖析

澳门新葡8455最新网站 1

杀人页面

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

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

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

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

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

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

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

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

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

跳转到“法官日志”页面

澳门新葡8455最新网站 2

投票页面

投票页面的逻辑:

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

标记想投死的人

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

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

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

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

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

跳转到“法官日志”页面

2.知识剖析

让你实现一个功能,给你两个数,让你获取它的和,你所写的如何才能获得任意给定的两个数的和,这个程序实现过程称为业务逻辑处理。

就像家里规矩–“吃饭前必须洗手”“有客人来要起立”-就是业务逻辑的生活化实例。

简单来就是在怎么做事(how to do), 比方说你去餐馆吃饭, 你点了个炒米粉,服务员给你下单,厨房见到单后下锅给你炒,你吃完后付账。这一些列动作都可以说是业务逻辑。

业务逻辑就是客户的逻辑。在 N 层架构的系统中,经常会提到这些名词。

表现层(Presentation layer) 业务逻辑层(Application layer)数据访问层(Data layer) ,在一个系统开发过程中,后台做一些处理,如果成功,则跳转到 success_xxx 页面,如果失败,则跳转到fail_xxx 页面,如果系统抛出了异常,则跳转到 5xx 页面,…… 这些属于页面逻辑。

还有一些持久层的逻辑,也就是对数据库的操作。

业务逻辑是核心逻辑,只关注用户的业务,比如管理系统和财务系统,需要处理的业务肯定不一样,但是页面的跳转大致相同,对于持久层的操作也差不多。如果你使用了 SSH 框架,那么 hibernate 和 struts 的代码有很大一部分可以复用

业务逻辑(BL Action)不关心页面如何跳转,只是简单的返回成功,或是失败,或是异常,struts 框架根据配置文件跳转到相应的页面。

业务逻辑也不关心数据如何存储,是存储在文件系统,还是存储在数据库系统。是存储在MySQL,还是NoSQL。也不关系到底用没用缓存。

3.常见问题

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

3.常见问题

那么我们今天的主题

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

4.解决方案

4.解决方案

实际上就是如何设置彼此的权限,以及定义游戏结束。

刚才讲过,程序实现过程称为业务逻辑处理。

程序实现的过程——获取上个页面设置的玩家数量,和玩家身份

如何定义死亡?

具体场景具体定义,比如用户眼中:头像变暗了(画个叉叉,写个死亡之类),不可点击和其他操作。程序上:要清除他的身份和号码。

杀手怎么杀人?

杀手杀人要满足当杀手人数过多时,被杀对象不是杀手,以及活着进入到杀人环节。

投票要怎么投死人?

投票也要满足少数服从多数的原则,要考虑到当票数相等时会出现什么情况?

1,是要进入下一个环节。

2,或者是两个被投票者双双出局。

3,还是不许出现这种情况, 必须要决定投一个人,否则判定杀手胜利。

——这些都是要在写程序之前说清楚,然后用程序实现的。

如何定义游戏结束?

因为写的是简易版的杀人游戏,所以这里就讨论简易版的相关规则,

平民胜利规则:平民只有一种胜利方式,当杀手一方全部被投死的时候。

杀手胜利规则:平民一方死光了,或者进入到下一轮的参与人数<=2时。(因为此时为了活命,双方会互相投票,出现死循环,这种情况直接定义杀手胜利)

5.编码实战

5.更多讨论

Q1:提问人:蓝裕伟

澳门新葡8455最新网站 3

A1:回答人:李浩

回答:能够继续杀人和投票,因为杀人是取决于点击确认按钮的,之前的刷新不影响这个。

Q2:提问人:吴浩杰

澳门新葡8455最新网站 4

A2:回答人:李浩

回答:

平民胜利规则:平民只有一种胜利方式,当杀手一方全部被投死的时候。

杀手胜利规则:平民一方死光了,或者进入到下一轮的参与人数<=2时。

Q3:提问人:郭建峰

澳门新葡8455最新网站 5

A3:回答人:李浩

回答:

因为第一天黑夜一定死亡的是平民,

用sessionStorage来存储date的天数,

然后做一个if...else判断就可以了。

个人拙见,多多指教

感谢阅读

github-PPT链接

https://ptteng.github.io/WEB/ppt/JS-04-service-logic.html#/

腾讯视频链接

v.qq.com/x/page/n051999g5gs.html


人生苦短,想学Python。

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

6.扩展思考

7.参考文献

8.更多讨论

详情请看:

视频链接

PPT链接

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

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

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

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

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

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

本文由澳门新葡8455最新网站发布,转载请注明来源

关键词: