Skip to content

Commit a0b6e81

Browse files
committed
Add the stage 11 check
1 parent 425f2f4 commit a0b6e81

1 file changed

Lines changed: 84 additions & 1 deletion

File tree

stageCheck.js

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
'stages/07': stage7,
1717
'stages/08': stage8,
1818
'stages/09': stage9,
19-
'stages/10': stage10
19+
'stages/10': stage10,
20+
'stages/11': stage11
2021
};
2122

2223
demoDoc_ = demo.contentDocument;
@@ -737,6 +738,88 @@
737738

738739
}
739740

741+
/**
742+
* 點擊執行後,點擊按鈕,判斷點矩陣是否有變化,重複點擊按鈕,直到蜂鳴器執行,則判斷過關
743+
* 做法:當蜂鳴起接收到資料時,檢查點矩陣資料,資料筆數要大於 2,互動區的數字與點短陣是否相同
744+
*/
745+
function stage11() {
746+
var selectEl = demoDoc_.querySelector('#select');
747+
var btns = engine_.list().btn;
748+
var buzzers = engine_.list().buzzer;
749+
var matrixs = engine_.list().matrix;
750+
var mapping = {
751+
"1": "00000082fe800000",
752+
"2": "0000f292929e0000",
753+
"3": "0000929292fe0000",
754+
"4": "00001e1010fe0000",
755+
"5": "00009e9292f20000",
756+
"6": "0000fe9292f20000"
757+
};
758+
var datas = [];
759+
var isPassed = false;
760+
761+
if (!btns.length) return;
762+
if (!buzzers.length) return;
763+
if (!matrixs.length) return;
764+
765+
btns.forEach(function (btn) {
766+
btn.setPressHandler(press);
767+
});
768+
769+
matrixs.forEach(function (matrix) {
770+
matrix.state(state);
771+
});
772+
773+
buzzers.forEach(function (bz) {
774+
bz.setCmdHandler(cmd);
775+
});
776+
777+
function press() {
778+
datas.length = 0;
779+
}
780+
781+
function state(hex) {
782+
datas.push(hex);
783+
}
784+
785+
function cmd() {
786+
setTimeout(checking, 1000);
787+
}
788+
789+
function checking() {
790+
if (isPassed) return;
791+
if (datas.length < 2) return;
792+
if (datas.slice().pop() === mapping[selectEl.value]) {
793+
isPassed = true;
794+
}
795+
796+
if (isPassed) {
797+
checkOver();
798+
799+
// 考量畫面有些動畫未完成,所以延遲 1 秒執行
800+
setTimeout(function () {
801+
alert('第 11 關 過關!');
802+
}, 1000);
803+
}
804+
805+
}
806+
807+
function checkOver() {
808+
btns.forEach(function (btn) {
809+
btn.setPressHandler(null);
810+
});
811+
812+
matrixs.forEach(function (matrix) {
813+
matrix.state(null);
814+
});
815+
816+
buzzers.forEach(function (bz) {
817+
bz.setCmdHandler(null);
818+
});
819+
}
820+
821+
}
822+
740823
Code.stageCheck = {
741824
init: init
742825
};

0 commit comments

Comments
 (0)