## 動腦猜猜接口文檔
sys.action.game/dongnaocaicai/play 動腦猜猜
<br>
#### 參數說明
|名稱|類型|是否必須|說明|
|:----:|:----:|:----:|:----:|
|text|String|是|用戶回答的話,一般用text和lastAnswer來判斷用戶是否回答正確|
|lastQuestion|String|否|上一輪的問題|
|lastAnswer|String|否|上一輪的答案|
|lastExplanation|String|否|上一輪問題的解釋|
|score|String|否|用戶積分|
|numChanceLeft|String|否|用戶剩余答題次數|
|totalNumUserSay|String|否|用戶總共答題次數|
|prevQuestion|String|否|用戶已答題目集,字符串,形式是q1##q2##q3……用來統計用戶答題數以及篩選給用戶非重復的題目|
|prevAnswer|String|否|用戶已答題目的答案集a1##a2##a3……|
|tag|String|否|游戲數據類別,跟動腦猜猜游戲相關|
#### 接口說明
**接口基本邏輯說明:**<br>

從圖中可以看到,動腦猜猜游戲基本可以分為這么幾步:
1. 進入動腦猜猜
2. 選擇類別
3. 玩游戲
4. 退出
<br>
其中**進入動腦猜猜**和**退出**都算是問答對,不需要出題,不涉及接口調用,而從用戶選擇類別開始,需要給用戶出題,需要記錄答題過程,就需要調用接口了。<br>
總結一下,動腦猜猜接口主要做了以下事情:<br>
* 根據用戶回答的話和之前問題的答案判斷用戶是否回答正確
* 統計用戶的積分
* 統計用戶答題數
* 根據答題次數和是否答對來決定繼續讓用戶答還是給出新的題目
* 根據用戶選擇的類別以及用戶答過的題(避免重復)出題
接口參數就是依據以上邏輯來設計的。<br>
**接口內部實現說明:**<br>
* 首先totalNumUserSay+1,numChanceLeft-1
* 根據text和lastAnswer判斷本輪用戶是否回答正確,如果正確或者numChanceLeft=0(已經沒有剩余答題機會),那么獲取一個新的問題,更新prevQuestion,prevAnswer,score;如果不正確,不獲取新的問題,不需更新prevQuestion,prevAnswer,score。
* 生成返回結果
**接口建議**:
當初限于架構,接口參數完全通過開發者后臺傳遞,導致接口參數很多,不易于維護,且開發者后臺的編輯也很繁瑣。<br>
目前在開發者后臺調用API接口時,會把userId作為參數傳遞給接口,所以**建議接口設計只需兩個參數:userId和text**,其中text還是用戶回答的話,而userId作為用戶標識,用來記錄用戶答題過程中的數據,把lastQuestion,lastAnswer,score,prevQuestion等數據維護在接口所在的服務器端,這樣接口邏輯更加清晰,參數更加可控,開發者后臺編輯也比較簡單。