|
16 | 16 | 'stages/07': stage7, |
17 | 17 | 'stages/08': stage8, |
18 | 18 | 'stages/09': stage9, |
19 | | - 'stages/10': stage10 |
| 19 | + 'stages/10': stage10, |
| 20 | + 'stages/11': stage11 |
20 | 21 | }; |
21 | 22 |
|
22 | 23 | demoDoc_ = demo.contentDocument; |
|
737 | 738 |
|
738 | 739 | } |
739 | 740 |
|
| 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 | + |
740 | 823 | Code.stageCheck = { |
741 | 824 | init: init |
742 | 825 | }; |
|
0 commit comments