目前實作的紙牌接龍還沒有結算畫面,所以今天就來做!
製作結算畫面本身不是問題,畢竟畫面沒有要做得超級漂亮的情況下都是沒問題的!
問題是何時跳出結算畫面? 我想到的情形有兩種:
結算牌堆
四堆都集完13張的情況7牌堆
的牌全部已經打開的情況我認為第一種判斷結算牌堆
的方式實作起來比較簡單,接下來實作也會朝這個方向前進。
宣告一個函數checkSolitaireGameDone
負責檢查紙牌接龍是否完成。
結算牌堆
,若數量不為13就直接回傳 否false
true
程式碼如下:
/**
* 檢查紙牌接龍是否完成
* @param {CardStacks} cardStacks
*/
function checkSolitaireGameDone(cardStacks) {
for (let i = 0; i < FOUR_SUITS.length; i++) {
if (cardStacks[FOUR_SUITS[i]].length !== 13) return false;
}
return true;
}
不意外的又使用到watch
這個關鍵字做監控,這部分就是跟Day4的連連看一樣,
當 牌堆cardStacks
發生變化就去觸發檢查,判定完成就使用alert
跳出結算訊息。
使用者點擊
alert()
之後,才會執行重設遊戲的函數resetGame()
// DragDemo.vue
watch(cardStacks, (newCardStacks) => {
const isDone = checkSolitaireGameDone(newCardStacks);
if (isDone) {
alert(`遊戲結束,花費時間: ${gameTime.value} 秒 總分數: ${gameScore.value}!!!`);
resetGame();
}
})
今天在實作結算畫面的過程雖然遇到一些Bug,但不影響遊戲可以正常跳出結算訊息並重置。
只是目前用alert
跳出那個結算訊息不太像一個正常遊戲的畫面,所以明天會繼續實作真正的結算畫面
和修正目前發現的Bug:
7牌堆
區中左右來回移動。程式碼: https://github.com/kabuto412rock/ithelp-pokergame/tree/day24