Skip to content

Commit 9a31876

Browse files
committed
Add the stage 14 check
1 parent 3ec5a65 commit 9a31876

1 file changed

Lines changed: 73 additions & 1 deletion

File tree

stageCheck.js

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
'stages/10': stage10,
2020
'stages/11': stage11,
2121
'stages/12': stage12,
22-
'stages/13': stage13
22+
'stages/13': stage13,
23+
'stages/14': stage14
2324
};
2425

2526
demoDoc_ = demo.contentDocument;
@@ -986,6 +987,77 @@
986987

987988
}
988989

990+
/**
991+
* 點擊按鈕後,伺服馬達轉 90 度,且網頁互動區也顯示 90,再點擊,則旋轉 0 度,互動區也顯示 0,完成該操作則過關
992+
* 做法:點擊按鈕後,做檢查,檢查互動區的值,與伺服馬達旋轉角度是否一致。此外,要檢查二種情況 0, 90 度。
993+
*/
994+
function stage14() {
995+
var showEl = demoDoc_.querySelector('#show');
996+
var btns = engine_.list().btn;
997+
var servos = engine_.list().servo;
998+
var check = [false, false];
999+
var isPassed = false;
1000+
var timer;
1001+
1002+
if (!btns.length) return;
1003+
if (!servos.length) return;
1004+
1005+
btns.forEach(function (btn) {
1006+
btn.setPressHandler(press);
1007+
});
1008+
1009+
function press() {
1010+
clearTimeout(timer);
1011+
timer = setTimeout(function () {
1012+
var demoAngle = parseInt(showEl.textContent);
1013+
if (demoAngle === 0) checkPoint1();
1014+
if (demoAngle === 90) checkPoint2();
1015+
checking();
1016+
}, 300);
1017+
}
1018+
1019+
function checkPoint1() {
1020+
if (check[0]) return;
1021+
check[0] = servos.some(function (servo) {
1022+
var angle = servo.getAngle();
1023+
return angle === 0 || angle === 5;
1024+
});
1025+
}
1026+
1027+
function checkPoint2() {
1028+
if (check[1]) return;
1029+
check[1] = servos.some(function (servo) {
1030+
var angle = servo.getAngle();
1031+
return angle === 90;
1032+
});
1033+
}
1034+
1035+
function checking() {
1036+
if (isPassed) return;
1037+
1038+
isPassed = check.reduce(function (acc, val) {
1039+
return acc && val;
1040+
}, true);
1041+
1042+
if (isPassed) {
1043+
checkOver();
1044+
1045+
// 考量畫面有些動畫未完成,所以延遲 1 秒執行
1046+
setTimeout(function () {
1047+
alert('第 14 關 過關!');
1048+
}, 1000);
1049+
}
1050+
1051+
}
1052+
1053+
function checkOver() {
1054+
btns.forEach(function (btn) {
1055+
btn.setPressHandler(null);
1056+
});
1057+
}
1058+
1059+
}
1060+
9891061
Code.stageCheck = {
9901062
init: init
9911063
};

0 commit comments

Comments
 (0)