1.背景介紹
業(yè)務(wù)邏輯是什么?
讓你實(shí)現(xiàn)一個(gè)功能,給你兩個(gè)數(shù),讓你獲取它的和,你所寫的如何才能獲得任意給定的兩個(gè)數(shù)的和,這個(gè)程序?qū)崿F(xiàn)過程稱為業(yè)務(wù)邏輯。
就像家里規(guī)矩–“吃飯前必須洗手”“有客人來要起立”-就是業(yè)務(wù)邏輯的生活化實(shí)例。
2.知識(shí)剖析
殺人和投票的業(yè)務(wù)邏輯分別是什么?
殺人頁投票邏輯
一.玩家無操作時(shí):1.打印出每個(gè)玩家的身份方框。2.標(biāo)記出已經(jīng)出局的玩家。
二.選擇殺死玩家時(shí):1。點(diǎn)擊選中玩家的方框時(shí),給出相應(yīng)被選中提示。不可以選擇已出局玩家。殺手不可以殺死同伙。3.更換選擇玩家時(shí),該玩家狀態(tài)標(biāo)記為被選中,其他玩家都為未選中。
三.確認(rèn)殺死玩家時(shí),對(duì)該玩家的對(duì)象屬性更改。例如生命屬性更改為killed,并記錄死亡天數(shù)。
投票頁的業(yè)務(wù)邏輯
一.玩家無操作時(shí):1.打印出每個(gè)玩家的身份方框。2.標(biāo)記出已經(jīng)出局的玩家。
二.選擇投死玩家時(shí):1。點(diǎn)擊選中玩家的方框時(shí),給出相應(yīng)被選中提示。不可以選擇已出局玩家。3.更換選擇玩家時(shí),該玩家狀態(tài)標(biāo)記為被選中,其他玩家都為未選中。
三.確認(rèn)殺死玩家時(shí),對(duì)該玩家的對(duì)象屬性更改。例如生命屬性更改為voted。記錄該玩家死亡天數(shù)。
四.每次投票結(jié)束后,天數(shù)+1.
五.判斷游戲是否結(jié)束。
3.常見問題
殺人和投票的具體的業(yè)務(wù)邏輯上有什么區(qū)別?
4.解決方案
實(shí)際上就是如何設(shè)置彼此的權(quán)限,以及定義游戲結(jié)束。剛才講過,程序?qū)崿F(xiàn)過程稱為業(yè)務(wù)邏輯處理。
程序?qū)崿F(xiàn)的過程——
1.獲取上個(gè)頁面設(shè)置的玩家數(shù)量,和玩家身份
如何定義死亡
具體場(chǎng)景具體定義,比如用戶眼中:頭像變暗了(畫個(gè)叉叉,寫個(gè)死亡之類),不可點(diǎn)擊和其他操作。程序上:要清除他的身份和號(hào)碼。
殺手怎么殺人?
殺手殺人要滿足當(dāng)殺手人數(shù)過多時(shí),被殺對(duì)象不是殺手,以及活著進(jìn)入到殺人環(huán)節(jié)
投票要怎么投死人?
投票也要滿足少數(shù)服從多數(shù)的原則,要考慮到當(dāng)票數(shù)相等時(shí)會(huì)出現(xiàn)什么情況?
1,是要進(jìn)入下一個(gè)環(huán)節(jié)。
2,或者是兩個(gè)被投票者雙雙出局。
3,還是不許出現(xiàn)這種情況, 必須要決定投一個(gè)人,否則判定殺手勝利。
——這些都是要在寫程序之前說清楚,然后用程序?qū)崿F(xiàn)的。
如何定義游戲結(jié)束。
因?yàn)閷懙氖呛?jiǎn)易版的殺人游戲,所以這里就討論簡(jiǎn)易版的相關(guān)規(guī)則,
平民勝利規(guī)則:平民只有一種勝利方式,當(dāng)殺手一方全部被投死的時(shí)候。
殺手勝利規(guī)則:平民一方死光了,或者進(jìn)入到下一輪的參與人數(shù)<=2時(shí)(因?yàn)榇藭r(shí)為了活命,雙方會(huì)互相投票,出現(xiàn)死循環(huán),這種情況直接定義殺手勝利)
更多討論
1、任務(wù)中的狀態(tài)信息如何保存
最簡(jiǎn)單的方法是使用數(shù)組對(duì)象,用數(shù)組對(duì)象創(chuàng)建life,day,vote,kill等狀態(tài)信息。有同學(xué)使用的是二維數(shù)組,這種方法也可以,但比較麻煩。
2、業(yè)務(wù)邏輯如果很復(fù)雜,怎么辦,有沒有一些技巧
盡量寫共用的方法,相似的邏輯,盡量用一個(gè)方法裝起來。讀取數(shù)據(jù)時(shí),盡量一次讀取出來。盡量共用同一個(gè)邏輯
3、任務(wù)中存在的bug
設(shè)定好人數(shù)后,點(diǎn)擊查看頁后跳轉(zhuǎn)到法官頁。編號(hào)了超出設(shè)定的人數(shù)。因?yàn)橹灰c(diǎn)擊,函數(shù)就執(zhí)行一次。將函數(shù)內(nèi)的判斷跳轉(zhuǎn)到法官頁的邏輯放在函數(shù)內(nèi)的前面
ptteng.github.io/PPT/PPT/js-04-service%20logic%20differences%20betweenkill&vote.html#/