서으이 2020. 4. 13. 11:45
728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
 
        // 미로 길을 배열로 만들기
        var map = [
            [111111111111111],
            [100000000001102],
            [101111111100101],
            [101000000110101],
            [101011110100101],
            [101011000101101],
            [101010010100101],
            [101010101010101],
            [100010001000101],
            [111110101101101],
            [100010101100101],
            [101010100110101],
            [101011110110101],
            [131000000100001],
            [111111111111111]
        ];
 
        var tableX = map[0].length;
        var tableY = map.length;
 
        //테이블 만들기
        function madeTable() {
            var str = "";
            str += "<table border=1>"// 1. table을 연다
            for (var y = 0; y < tableY; y++) { //4. 만들 tr의 갯수만큼 for문을 작성한다
                str += "<tr>"// 2. tr을 연다
                for (var x = 0; x < tableX; x++) { //3. 만들 td의 갯수만큼 for문을 작성한다 
                    str += "<td width=40 height=40 id=y" + y + "x" + x + "></td>"// 테이블 id 만들기
                }
                str += "</tr>"//5. tr를 닫는다
            }
            str += "</table>"// 6.table을 닫는다
            return str;
        }
 
        //테이블 색칠하기
        function changeColor(id, color) {
            document.getElementById(id).style.backgroundColor = color;
        }
 
        function copyArray() {
            for (var y = 0; y < tableY; y++) {
                for (var x = 0; x < tableX; x++) {
                    switch (map[y][x]) {
                        case 0:
                            changeColor("y" + y + "x" + x, "white")
                            break;
                        case 1:
                            changeColor("y" + y + "x" + x, "red")
                            break;
                        case 2:
                            changeColor("y" + y + "x" + x, "yellow")
                            break;
                        case 3:
                            document.getElementById("y" + y + "x" + x).innerHTML = "<img src='Kkobuk.jpg' width=35 height=35>";
                            break;
                    }
                }
            }
        }
 
        //테이블 출력하기
        window.onload = function () {
            document.getElementById("console").innerHTML
                = madeTable();
            copyArray();
        }
 
        var nowX = 1// 현재 꼬부기가 위치한 좌표
        var nowY = 13;
 
        //컨트롤 키 설정하기 (오른쪽 숫자패드로 움직이도록)
        function inputFunction(e) {
            switch (e) {
                case 56//위쪽
                    switch (map[nowY - 1][nowX]) { //y축에서 -1을 한 위치가 벽인지 아닌지를 확인해야 한다.
                        case 0:
                            break;
                        case 1:
                            return// 함수 종료
                        case 2:
                            alert("축하합니다! 탈출에 성공했어요!")
                            break;
                    }
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = ""//지나친곳에서는 꼬부기를 지워야 함
                    nowY--//앞으로 꼬부기가 이동할 곳.
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "<img src='Kkobuk.jpg' width=30 height=30>";
                    break;
                case 52//왼쪽
                    switch (map[nowY][nowX - 1]) {
                        case 0:
                            break;
                        case 1:
                            return;
                        case 2:
                            alert("축하합니다! 탈출에 성공했어요!")
                            break;
                    }
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "";
                    nowX--;
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "<img src='Kkobuk.jpg' width=30 height=30>";
                    break;
                case 54//오른쪽
                    switch (map[nowY][nowX + 1]) {
                        case 0:
                            break;
                        case 1:
                            return;
                        case 2:
                            alert("축하합니다! 탈출에 성공했어요!")
                            break;
                    }
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "";
                    nowX++;
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "<img src='Kkobuk.jpg' width=30 height=30>";
                    break;
                case 50//아래쪽
                    switch (map[nowY + 1][nowX]) {
                        case 0:
                            break;
                        case 1:
                            return;
                        case 2:
                            alert("축하합니다! 탈출에 성공했어요!")
                            break;
                    }
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "";
                    nowY++;
                    document.getElementById("y" + nowY + "x" + nowX).innerHTML = "<img src='Kkobuk.jpg' width=30 height=30>";
                    break;
            }
        }
 
    </script>
</head>
 
<body onkeypress="inputFunction(event.keyCode)">
    <!--컨트롤 키 설정하는 이벤트-->
    <!--event는 내장객체 .을 붙이면 사용자가 누른 키값이 event의 매개변수로 실행된다-->
    <div id="console"></div>
</body>
 
</html>
cs
728x90
반응형