大家好,我是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 视频链接

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

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

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

  1. 业务逻辑写在存储过程好还是后端好_后端两小时,前端一星期!你只是一个写接口的工程师吗?...

    故事从一名前端工程师的呐喊开始: 我们公司做项目分配任务,一个星期的活,后端呢,两三个小时就弄完了,前端要做界面,做交互,做功能,忙活一个星期还得和设计师对 UI,和需求方对业务逻辑,最后呢,管事的还 ...

  2. 制定统一业务逻辑基础规则

    在系统开发前都会制定代码编写规则,这样能够很好的规范系统代码编写,提高代码可阅读性和可维护性.同样在编写业务逻辑上自己也会定义基础处理规则,这样就能够清楚明确系统中所有业务逻辑的处理过程(主要也是方便 ...

  3. Java 的业务逻辑验证框架 fluent-validator

    背景 在互联网行业中,基于 Java 开发的业务类系统,不管是服务端还是客户端,业务逻辑代码的更新往往是非常频繁的,这源于功能的快速迭代特性.在一般公司内部,特别是使用 Java web 技术构建的平 ...

  4. m5310模组数据上传至onenet_硬核干货!基于M5310-A的NB-IoT水表通信模块软件业务逻辑分享...

    根据不同的应用场景需求,目前NB-IoT水表主要有以下几种方案: 图1 几种常见NB水表方案 接下来将从NB-IoT水表上电开机.模组初始化.入网判断.业务逻辑四个环节来详细讲述,以下业务流程仅供参考 ...

  5. 医药电商、线上药房、连锁药店、用药咨询、药箱补货、药师认证、分销商、合伙人、医生管理、诊所管理、处方药、收银、发票、电子会员卡、门店调拨、提成分销、问诊咨询、积分、顾客、流程图、业务逻辑、营销、优惠

    医药电商.线上药房.连锁药店.用药咨询.药箱补货.药师认证.分销商.合伙人.医生管理.诊所管理.处方药.收银.发票.电子会员卡.门店调拨.提成分销.问诊咨询.积分.顾客.流程图.业务逻辑.营销.优惠 ...

  6. 12306 是不是目前世界上业务逻辑最复杂的系统?

    视学算法阿广 读完需要 4 分钟 速读仅需 2 分钟 最近春节到了,然后又到了大家一年一度的春节抢票大战的时间了.前几天 12306 不堪重负,好像又出现了抖动.于是乎,在普通人都纷纷吐槽 12306 ...

  7. 请不要将抛出异常作为业务逻辑使用!!!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:myfor www.cnblogs.com/myfor/p/ ...

  8. 业务逻辑全写在sql_TiDB 在转转的业务实战

    作者介绍 陈维,转转优品技术部 RD. 世界级的开源分布式数据库 TiDB 自 2016 年 12 月正式发布第一个版本以来,业内诸多公司逐步引入使用,并取得广泛认可. 对于互联网公司,数据存储的重要 ...

  9. Servlet业务逻辑封装的试探

    最近使用MVC的理念架构了一个简单的新闻系统, 按照理念意志,自然是使用Servlet处理业务逻辑, 当我将函数封装在3个层次以内时,发现新闻系统的速度的确有所提高 可是封装到3个层次以上时,发现程序 ...

最新文章

  1. Java 9因模块化进程缓慢而欲推迟发布
  2. 推销计算机英语作文,关于推销电脑的英语作文.DOC
  3. android TextView 的垂直滚动
  4. How to think positively 如何培养正念
  5. java开发简介_Java Web开发介绍
  6. 联手微软,Docker公司将推出Docker Desktop for WSL 2
  7. jdk版本修改不生效
  8. python的ctypes模块详解数组_如何使用Python的ctypes和readinto读取包含数组的结构?...
  9. 正则表达式 Java
  10. matlab 2ask原理,基于Matlab对2ASK调制解调及其仿真设计
  11. 如何清除本地计算机搜索记录,怎么深度清理电脑使用痕迹?
  12. 制作双启动(传统BIOS与UEFI均可引导的U盘)
  13. Cisco IOS配置环境,路由器和交换机的基本连接配置方法和连通性
  14. 智能体脂秤方案——什么是体脂?
  15. cpp整理学习笔记 文件I/O:随机存取fseek()和ftell()
  16. 英语国际音标之元音发音技巧
  17. 绘画板绘-小白画线不稳怎么办?
  18. webERP的深入浅出系列——1 基础数据准备初始化
  19. java-php-python-springboot线上教学平台计算机毕业设计
  20. RecyclerView添加下划线

热门文章

  1. python 海象运算符_python := 海象运算符
  2. 鹅厂老将被拒,蚂蚁金服嘲讽,外包都没资格,Java界面试太刺激了
  3. 天下乌鸦一般黑...
  4. Oracle ODBC连接配置
  5. 面向对象python_python面向对象(一)
  6. hbase 进阶之旅一(windows下源码的安装与调试)
  7. ubuntu docker login Error saving credentials: error storing credentials - err: exit status 1, out:
  8. JTable表头的行高是怎样设置的
  9. Java高级开发学习大纲
  10. 让 WordPress 缩略图机制支持URL外链图片