发表于: 2017-04-09 20:32:18

2 1619


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


背景介绍:

在实现一个页面前,我们需要先清楚该页面的业务逻辑。

混沌的状态思路不清晰,不利于编程。今天我们来看一下任务4的两个功能页面,杀人和投票的业务逻辑是什么,它们有什么区别。

什么是业务逻辑?

业务逻辑部分是软件产品的核心,它客观存在于软件产品内部,界面交互部分是业务逻辑与使用者进行交流的接口,使用者通过界面交互部分,与业务进行交流。软件产品除界面和交互外的一切都可看作是广义上的业务逻辑


知识剖析:

1.杀人的业务逻辑?

2.投票的业务逻辑?

3.简易版二者区别

4.定义游戏结束?


简易版:

杀人的业务逻辑?

一.玩家无操作时:1.打印出每个玩家的身份方框。2.标记出已经出局的玩家。

二.选择杀死玩家时:1。点击选中玩家的方框时,给出相应被选中提示。不可以选择已出局玩家。杀手不可以杀死同伙。3.更换选择玩家时,该玩家状态标记为被选中,其他玩家都为未选中。

三.确认杀死玩家时,对该玩家的对象属性更改。例如生命属性更改为killed,并记录死亡天数。

 

 

投票的业务逻辑?

一.玩家无操作时:1.打印出每个玩家的身份方框。2.标记出已经出局的玩家。

二.选择投死玩家时:1。点击选中玩家的方框时,给出相应被选中提示。不可以选择已出局玩家。3.更换选择玩家时,该玩家状态标记为被选中,其他玩家都为未选中。

三.确认杀死玩家时,对该玩家的对象属性更改。例如生命属性更改为voted。记录该玩家死亡天数。

四.每次投票结束后,天数+1.

五.判断游戏是否结束。

 

 

简易版二者区别?

杀人时不可以选择同阵营玩家。投票时,玩家不知道阵营身份,可以不分阵营的选择投死玩家。投票后天数+1.

 

定义游戏结束?

判断条件?

每天结束后判断玩家人数,当杀手人数大于等于平民人数时游戏结束,或者当杀手人数为0时结束游戏



常见问题:

1.如何获取玩家方框内的文字?

$(".box").click(function () {
    //获取被选中的盒子内文字
    var roleText=$($(this).find(".role")).text();

2.如何判断是否达成条件?

在这里分享一个思路,如果其他同学有不同想法欢迎分享讨论。

var aliveKill=[];
var aliveVill=[];

循环总数组,使用判断条件分别把活着的杀手和活着的平民存储到相应数组里。

判断两个数组的长度即可得出是否达成结束条件以及胜负分别是谁。


3.存储玩家状态?

var oStatus = [];
oStatus[i] = {};
oStatus[i].num = i + 1;
oStatus[i].role = aTotal[i];
oStatus[i].life = "alive";
oStatus[i].deadDay=null;




扩展思考:如果是多人客户端版狼人杀,杀人和投票的业务逻辑应该怎么安排呢?

在简易版基础上添加逻辑。杀人:杀手玩家可以看到同阵营玩家的身份。其他玩家视角,所有玩家身份不显示。有多个杀手时,选择要杀的玩家不统一,则少数服从多数,考虑每个杀手选择对象均不同的情况。


投票:所有玩家都看不到其他玩家的身份。投票时不同玩家投票不同,选取票数最多的投死。若出现最多票数相同情况,再考虑。


参考文献:http://www.uml.org.cn/zjjs/201008021.asp 细说业务逻辑

http://www.cnblogs.com/zhaoxiaolei/archive/2012/04/06/2434112.html 如何理解业务逻辑

更多讨论:简易版的业务逻辑,你有其他的想法吗? 如何实现?



今天完成的事:1.准备小课堂PPT。

2.准备完小课堂剩下的时间继续做任务7.用angular给form表单添加验证功能。

使用ng-message报错:

Error: [$injector:unpr] Unknown provider: ngMessagesProvider <- ngMessages <- loginCtrl

http://errors.angularjs.org/1.6.3/$injector/unpr?p0=ngMessagesProvider%20%3C-%20ngMessages%20%3C-%20loginCtrl

    at angular.js:66


在登录页的js中已注入

var loginApp = angular.module('loginApp', ['ngMessages']);

html:

<div ng-app="loginApp">
   <div class="login-content" ng-controller="loginCtrl">
       <div class="login-wrap">
           <h3 class="login-title">喝我水站后台登录</h3>
           <form action="" name="loginForm">
               <div class="user-wrap">
                   <img src="images/icon-user.png"/>
                   <input type="text" placeholder="用户名" class="inp-user" id="sUserName"
                          name="userName"
                          ng-model="inName"
                          ng-minlength="5"
                          ng-maxlength="20"
                          required />
               </div>
               <div class="warning user-warn" ng-message="loginForm.userName.$error">
                   <div ng-message="required">*必填</div>
                   <div ng-message="minlength">用户名不可以小于5</div>
               </div>

main文件中也引用了ng-message的cdn。

不明白为什么会出现这个报错。


学习了自定义的filter。使用filter把约定的字段和汉字对应起来。

但是不知道如何与html里的绑定。


明天要做的事:继续学习ng。

遇到的问题:angular的语法有点迷。运行时数据如何传递的,不清楚。

收获:




返回列表 返回列表
评论

    分享到