杀人和投票的业务逻辑上有什么区别?
大家好,我是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时。
问题三:怎么判断游戏结束是从哪个页面跳转过来的?
PPT 视频链接
感谢高昕师兄,此教程是在他们之前技术分享的基础上完善而成。
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
杀人和投票的业务逻辑上有什么区别?相关推荐
- 业务逻辑写在存储过程好还是后端好_后端两小时,前端一星期!你只是一个写接口的工程师吗?...
故事从一名前端工程师的呐喊开始: 我们公司做项目分配任务,一个星期的活,后端呢,两三个小时就弄完了,前端要做界面,做交互,做功能,忙活一个星期还得和设计师对 UI,和需求方对业务逻辑,最后呢,管事的还 ...
- 制定统一业务逻辑基础规则
在系统开发前都会制定代码编写规则,这样能够很好的规范系统代码编写,提高代码可阅读性和可维护性.同样在编写业务逻辑上自己也会定义基础处理规则,这样就能够清楚明确系统中所有业务逻辑的处理过程(主要也是方便 ...
- Java 的业务逻辑验证框架 fluent-validator
背景 在互联网行业中,基于 Java 开发的业务类系统,不管是服务端还是客户端,业务逻辑代码的更新往往是非常频繁的,这源于功能的快速迭代特性.在一般公司内部,特别是使用 Java web 技术构建的平 ...
- m5310模组数据上传至onenet_硬核干货!基于M5310-A的NB-IoT水表通信模块软件业务逻辑分享...
根据不同的应用场景需求,目前NB-IoT水表主要有以下几种方案: 图1 几种常见NB水表方案 接下来将从NB-IoT水表上电开机.模组初始化.入网判断.业务逻辑四个环节来详细讲述,以下业务流程仅供参考 ...
- 医药电商、线上药房、连锁药店、用药咨询、药箱补货、药师认证、分销商、合伙人、医生管理、诊所管理、处方药、收银、发票、电子会员卡、门店调拨、提成分销、问诊咨询、积分、顾客、流程图、业务逻辑、营销、优惠
医药电商.线上药房.连锁药店.用药咨询.药箱补货.药师认证.分销商.合伙人.医生管理.诊所管理.处方药.收银.发票.电子会员卡.门店调拨.提成分销.问诊咨询.积分.顾客.流程图.业务逻辑.营销.优惠 ...
- 12306 是不是目前世界上业务逻辑最复杂的系统?
视学算法阿广 读完需要 4 分钟 速读仅需 2 分钟 最近春节到了,然后又到了大家一年一度的春节抢票大战的时间了.前几天 12306 不堪重负,好像又出现了抖动.于是乎,在普通人都纷纷吐槽 12306 ...
- 请不要将抛出异常作为业务逻辑使用!!!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:myfor www.cnblogs.com/myfor/p/ ...
- 业务逻辑全写在sql_TiDB 在转转的业务实战
作者介绍 陈维,转转优品技术部 RD. 世界级的开源分布式数据库 TiDB 自 2016 年 12 月正式发布第一个版本以来,业内诸多公司逐步引入使用,并取得广泛认可. 对于互联网公司,数据存储的重要 ...
- Servlet业务逻辑封装的试探
最近使用MVC的理念架构了一个简单的新闻系统, 按照理念意志,自然是使用Servlet处理业务逻辑, 当我将函数封装在3个层次以内时,发现新闻系统的速度的确有所提高 可是封装到3个层次以上时,发现程序 ...
最新文章
- Java 9因模块化进程缓慢而欲推迟发布
- 推销计算机英语作文,关于推销电脑的英语作文.DOC
- android TextView 的垂直滚动
- How to think positively 如何培养正念
- java开发简介_Java Web开发介绍
- 联手微软,Docker公司将推出Docker Desktop for WSL 2
- jdk版本修改不生效
- python的ctypes模块详解数组_如何使用Python的ctypes和readinto读取包含数组的结构?...
- 正则表达式 Java
- matlab 2ask原理,基于Matlab对2ASK调制解调及其仿真设计
- 如何清除本地计算机搜索记录,怎么深度清理电脑使用痕迹?
- 制作双启动(传统BIOS与UEFI均可引导的U盘)
- Cisco IOS配置环境,路由器和交换机的基本连接配置方法和连通性
- 智能体脂秤方案——什么是体脂?
- cpp整理学习笔记 文件I/O:随机存取fseek()和ftell()
- 英语国际音标之元音发音技巧
- 绘画板绘-小白画线不稳怎么办?
- webERP的深入浅出系列——1 基础数据准备初始化
- java-php-python-springboot线上教学平台计算机毕业设计
- RecyclerView添加下划线
热门文章
- python 海象运算符_python := 海象运算符
- 鹅厂老将被拒,蚂蚁金服嘲讽,外包都没资格,Java界面试太刺激了
- 天下乌鸦一般黑...
- Oracle ODBC连接配置
- 面向对象python_python面向对象(一)
- hbase 进阶之旅一(windows下源码的安装与调试)
- ubuntu docker login Error saving credentials: error storing credentials - err: exit status 1, out:
- JTable表头的行高是怎样设置的
- Java高级开发学习大纲
- 让 WordPress 缩略图机制支持URL外链图片