重要變數:
hp:現有生命值。
floor:目前通過關卡數。
count:目前版面行列之邊長(方塊個數)。
record:遊戲結束後是否紀錄得分。
gameStart:遊戲是否已經開始。
hintUsed:是否使用過提示功能。
pause:是否處於暫停狀態。
soundeffect:音效是否開啟。
bgm:BGM是否開啟。
重要函式:
點擊開始/重啟遊戲按鈕 startBtn.addEventListener():
首先檢查BGM是否開啟而決定撥放與否,重置變數狀態以及按鈕貼圖,將狀態列設置好,設定倒計時,以2x2版面開始遊戲。
點擊暫停按鈕pauseBtn.addEventListener():
此功能遊戲開始後才可使用,透過變數pause(是否處於暫停狀態)而決定行動:
如果pause為false(並無處於暫停狀態),移除倒計時,並移除方塊點擊函式以鎖定版面,最後將按鈕貼圖更換並將變數pause以及record設為false,代表此局不可紀錄得分。
如果pause為true(處於暫停狀態),重新倒計時,重新綁定方塊點擊函式,最後將按鈕貼圖更換並將變數pause設為true,遊戲繼續進行。
點擊音效按鈕soundEffectBtn.addEventListener():
透過變數soundeffect (音效是否開啟)而決定行動:
如果soundeffect為true(音效開啟),則更換按鈕貼圖,並將soundeffect設為false。
如果pause為false(音效關閉),則更換按鈕貼圖,並將soundeffect設為true。
點擊音效按鈕BGMBtn.addEventListener():
透過變數bgm (BGM是否開啟)而決定行動:
如果bgm為true(BGM開啟),則更換按鈕貼圖,並將bgm設為false。
如果bgm為false(BGM關閉),則更換按鈕貼圖,並將bgm設為true。
點擊提示按鈕hintBtn.addEventListener():
如果滿足提示功能所有使用條件,點擊即可支付一點生命值來將將異色方塊處在的九宮格框起來,函式透過變數ansRow、ansCol確定異色方塊方位,並讓九宮格以外的色塊都上色為灰色。
異色色塊點擊clickansBtn():
首先檢查音效是否使用而決定是否撥放音效,更新關卡與得分,並透過createBlocks()生成新版面。
同色色塊點擊clickotherBtn():
首先檢查音效是否使用而決定是否撥放音效,扣除hp並透過heartControll()調整生命值版面,同時檢查hp,剩下1將停用提示功能,剩下0則結算遊戲,並根據變數record決定是否紀錄分數。
時間用盡之結算timeOut():
倒計時結束將觸發此函式,結算遊戲並根據變數 record決定是否紀錄分數。
倒數計時countDown():
用於倒計時,並且控制版面倒計時之數字變化。
控制版面hp貼圖 heartControll(hp):
根據現有hp數量,更新版面上hp貼圖表示。
根據通過關卡數控制色差(難易度) randomControll():
此函式會隨機回傳一個決定色差數值的數字,具體規則如下:
10關以內,數值範圍在20~35;
10~19關,數值範圍在15~30;
20~29關,數值範圍在10~25;
30~39關,數值範圍在5~20;
40關以後,數值範圍在5~15。
生成num*num版面 createBlocks(num):
首先先將版面淨空,並隨機決定異色方塊之行列,然後用迴圈生成方塊。更新hint可否使用以及變數hintUsed以後,再自動調整方塊邊長(650 / count px),然後決定同色方塊之RGB(各介於50~210),接著隨機決定異色模式(0~14)。將所有色塊套入上述特性後,異色方塊再透過randomControll()得到的色差值根據異色模式進行上色,最後再將同色方塊與異色方塊綁定點擊函式。
紀錄得分recordAdd():
將紀錄印在計分板上。