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

 大家好,我是IT修真院深圳分院第九期的学员徐炜,一枚正直纯洁善良的前端程序员。今天给大家带来的是杀人和投票的业务逻辑上有什么区别。

一.背景介绍

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

 在做任务2-4杀人游戏时,我们会碰到很多逻辑上的问题,为实现杀人游戏各项功能,就需要厘清杀人和投票之间的逻辑区别。

二.知识剖析  

    1、广义上的义务逻辑——项目本身固有的一种品性,自然存在于项目内部,是项目具有的在某个业务领域内的逻辑,是该项目的核心和灵魂。 一个项目除界面和交互外的一切都可看作是广义业务逻辑。

 2、狭义上的业务逻辑——等同于分层架构中“业务逻辑层”的职责,是项目中处理与业务相关任务的部分,一般狭义上的业务逻辑不包含数据持久化, 而只关注领域内的相关业务。

 3、对于以上两种定义,我们不要割裂开来看,而要辩证统一的去看,这样,才能构建一个完整而辩证统一的“业务逻辑”概念。

 4、业务逻辑就是客户的逻辑,在 N 层架构的系统中,经常会提到这些名词。表现层(Presentation layer) 业务逻辑层(Application layer) 数据访问层(Data layer) 在一个系统开发过程中,后台做一些处理, 如果成功,则跳转到 success_xxx 页面,如果失败,则跳转到 fail_xxx 页面,如果系统抛出了异常,则跳转到 5xx 页面, 这些属于页面逻辑

三.常见问题

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

四.解决方案

  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时。
问题三:怎么判断游戏结束是从哪个页面跳转过来的
我的做法是,储存一个skip,当从投票页面跳转,标记为0,当从杀人页面跳转标记为1,再通过switch case语句判断即可进行下一步操作。

  

 PPT 视频链接

  感谢高昕师兄,此教程是在他们之前技术分享的基础上完善而成。 

  今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值