rev |
line source |
pascal@24131
|
1 --- main.htm
|
pascal@24131
|
2 +++ main.htm
|
pascal@24131
|
3 @@ -11,8 +11,9 @@
|
pascal@24131
|
4 -->
|
pascal@24131
|
5 <html>
|
pascal@24131
|
6 <head>
|
pascal@24131
|
7 +<meta http-equiv="Content Type" content="text/html;charset=utf-8">
|
pascal@24131
|
8 <meta name="viewport" content="width=device-width, initial-scale=1">
|
pascal@24131
|
9 -<style>
|
pascal@24131
|
10 +<style type="text/css">
|
pascal@24131
|
11 <!--
|
pascal@24131
|
12 img.r{
|
pascal@24131
|
13 width:30px;
|
pascal@24131
|
14 @@ -84,11 +85,11 @@
|
pascal@24131
|
15 if (evenement.which == 52 || evenement.which == 37) {
|
pascal@24131
|
16 Move(eval(manpos) - 1)
|
pascal@24131
|
17 } else if (evenement.which == 56 || evenement.which == 38) {
|
pascal@24131
|
18 - Move(eval(manpos) - Row)
|
pascal@24131
|
19 + Move(eval(manpos) - Col)
|
pascal@24131
|
20 } else if (evenement.which == 54 || evenement.which == 39) {
|
pascal@24131
|
21 Move(eval(manpos) + 1)
|
pascal@24131
|
22 } else if (evenement.which == 50 || evenement.which == 40) {
|
pascal@24131
|
23 - Move(eval(manpos) + Row)
|
pascal@24131
|
24 + Move(eval(manpos) + Col)
|
pascal@24131
|
25 }
|
pascal@24131
|
26 }
|
pascal@24131
|
27
|
pascal@24131
|
28 @@ -108,7 +109,7 @@
|
pascal@24131
|
29 if (window.event.keyCode == 37) {
|
pascal@24131
|
30 Move(eval(manpos) - 1)
|
pascal@24131
|
31 } else if (window.event.keyCode == 38) {
|
pascal@24131
|
32 - Move(eval(manpos) - Row)
|
pascal@24131
|
33 + Move(eval(manpos) - Col)
|
pascal@24131
|
34 } else if (window.event.keyCode == 39) {
|
pascal@24131
|
35 Move(eval(manpos) + 1)
|
pascal@24131
|
36 } else if (window.event.keyCode == 40) {
|
pascal@24131
|
37 @@ -152,6 +153,7 @@
|
pascal@24131
|
38 level = new Array()
|
pascal@24131
|
39 maxLevel = 97
|
pascal@24131
|
40 moves = 0
|
pascal@24131
|
41 +saved = ""
|
pascal@24131
|
42
|
pascal@24131
|
43 function ReloadLevel() {
|
pascal@24131
|
44 manpos = parent.frames[0].document.forms[0].elements[Row*Col].value
|
pascal@24131
|
45 @@ -174,44 +176,57 @@
|
pascal@24131
|
46 function dir(d) {
|
pascal@24131
|
47 if (d == -1) return "L";
|
pascal@24131
|
48 if (d == 1) return "R";
|
pascal@24131
|
49 - if (d == Row) return "D";
|
pascal@24131
|
50 - if (d == -Row) return "U";
|
pascal@24131
|
51 + if (d == Col) return "D";
|
pascal@24131
|
52 + if (d == -Col) return "U";
|
pascal@24131
|
53 +}
|
pascal@24131
|
54 +
|
pascal@24131
|
55 +function undoDir(c) {
|
pascal@24131
|
56 + if (c.toLowerCase() == 'u') return Col;
|
pascal@24131
|
57 + if (c.toLowerCase() == 'd') return -Col;
|
pascal@24131
|
58 + if (c.toLowerCase() == 'r') return -1;
|
pascal@24131
|
59 + if (c.toLowerCase() == 'l') return 1;
|
pascal@24131
|
60 }
|
pascal@24131
|
61
|
pascal@24131
|
62 function print_moves(m) {
|
pascal@24131
|
63 document.getElementById('moves').firstChild.nodeValue=m + " moves"
|
pascal@24131
|
64 }
|
pascal@24131
|
65 +
|
pascal@24131
|
66 function UndoMove() {
|
pascal@24131
|
67 - if (ua != -1) {
|
pascal@24131
|
68 - document.images[manpos].src = eval("img" + level[manpos] + ".src")
|
pascal@24131
|
69 - document.images[ua].src = eval("img" + lua + ".src")
|
pascal@24131
|
70 - document.images[ub].src = eval("img" + lub + ".src")
|
pascal@24131
|
71 - level[ua] = lua
|
pascal@24131
|
72 - level[ub] = lub
|
pascal@24131
|
73 - level[um] = lum
|
pascal@24131
|
74 - document.images[manpos = um].src = usrc
|
pascal@24131
|
75 - nbBoxin = unb
|
pascal@24131
|
76 - print_moves(--moves)
|
pascal@24131
|
77 - ua = -1
|
pascal@24131
|
78 - }
|
pascal@24131
|
79 + if (saved.length > 0) {
|
pascal@24131
|
80 + var c = saved.charAt(saved.length-1)
|
pascal@24131
|
81 + var m = eval("manD.src")
|
pascal@24131
|
82 + do {
|
pascal@24131
|
83 + saved = saved.substring(0,saved.length-1)
|
pascal@24131
|
84 + d = undoDir(c)
|
pascal@24131
|
85 + a = manpos - d
|
pascal@24131
|
86 + if (c != c.toLowerCase()) {
|
pascal@24134
|
87 + if (level[a] == boxin && level[manpos] != dest) nbBoxin++
|
pascal@24134
|
88 + if (level[a] != boxin && level[manpos] == dest) nbBoxin--
|
pascal@24131
|
89 + print_moves(--moves)
|
pascal@24131
|
90 + level[a] = (level[a] == boxin) ? dest : floor
|
pascal@24131
|
91 + level[manpos] = (level[manpos] == dest) ? boxin : boxout
|
pascal@24131
|
92 + document.images[a].src = eval("img" + level[a] + ".src")
|
pascal@24131
|
93 + }
|
pascal@24131
|
94 + document.images[manpos].src = eval("img" + level[manpos] + ".src")
|
pascal@24131
|
95 + manpos += d
|
pascal@24131
|
96 + if (saved.length == 0) break
|
pascal@24131
|
97 + c = saved.charAt(saved.length-1)
|
pascal@24131
|
98 + m = eval("man"+c.toUpperCase()+".src")
|
pascal@24131
|
99 + } while (c == c.toLowerCase())
|
pascal@24131
|
100 + document.images[manpos].src = m
|
pascal@24131
|
101 + }
|
pascal@24131
|
102 }
|
pascal@24131
|
103
|
pascal@24131
|
104 function Move(a) {
|
pascal@24131
|
105 d = a - manpos
|
pascal@24131
|
106
|
pascal@24131
|
107 if (d == 1 || d == -1 || d == Col || d == -Col) {
|
pascal@24131
|
108 + var m = dir(d).toLowerCase()
|
pascal@24131
|
109 if (level[a] == boxin || level[a] == boxout) {
|
pascal@24131
|
110 b = a + d
|
pascal@24131
|
111 - um = manpos
|
pascal@24131
|
112 - ua = a
|
pascal@24131
|
113 - ub = b
|
pascal@24131
|
114 - lum = level[manpos]
|
pascal@24131
|
115 - lua = level[a]
|
pascal@24131
|
116 - lub = level[b]
|
pascal@24131
|
117 - usrc = document.images[manpos].src
|
pascal@24131
|
118 - unb = nbBoxin
|
pascal@24131
|
119 - print_moves(++moves)
|
pascal@24131
|
120 + m = dir(d)
|
pascal@24131
|
121 if (level[b] == floor || level[b] == dest) {
|
pascal@24131
|
122 + ++moves
|
pascal@24131
|
123 level[a] == boxin ? (level[a] = dest, nbBoxin++) : level[a] = floor
|
pascal@24131
|
124 level[b] == dest ? (level[b] = boxin, nbBoxin--) : level[b] = boxout
|
pascal@24131
|
125 document.images[b].src = eval("img" + level[b] + ".src")
|
pascal@24131
|
126 @@ -221,7 +236,9 @@
|
pascal@24131
|
127 if (level[a] == floor || level[a] == dest) {
|
pascal@24131
|
128 document.images[manpos].src = eval("img" + level[manpos] + ".src")
|
pascal@24131
|
129 document.images[manpos = a].src = eval("man" + dir(d) + ".src")
|
pascal@24131
|
130 + saved+=m
|
pascal@24131
|
131 }
|
pascal@24131
|
132 + print_moves(moves)
|
pascal@24131
|
133
|
pascal@24131
|
134 if (nbBoxin == 0) {
|
pascal@24131
|
135 if (nbLevel < maxLevel) {
|
pascal@24131
|
136 @@ -246,14 +263,15 @@
|
pascal@24131
|
137 for (y = 0 ; y < Row; y++) {
|
pascal@24131
|
138 document.write ("<TR>")
|
pascal@24131
|
139 for (x = 0; x < Col; x++) {
|
pascal@24131
|
140 - level[x + Row * y] = parent.frames[0].document.forms[0].elements[x + Row * y].value
|
pascal@24131
|
141 - if (level[x + Row * y] == dest) nbBoxin++
|
pascal@24131
|
142 - if (level[x + Row * y] == land || level[x + Row * y] == wall)
|
pascal@24131
|
143 + var i = x + Col * y
|
pascal@24131
|
144 + level[i] = parent.frames[0].document.forms[0].elements[i].value
|
pascal@24131
|
145 + if (level[i] == dest) nbBoxin++
|
pascal@24131
|
146 + if (level[i] == land || level[i] == wall)
|
pascal@24131
|
147 document.write("<TD VALIGN=TOP>",
|
pascal@24131
|
148 - "<IMG align=middle class=r border=0 src=\"", level[x + Row * y], ".gif\"<\/TD>")
|
pascal@24131
|
149 + "<IMG align=middle class=r border=0 src=\"", level[i], ".gif\"<\/TD>")
|
pascal@24131
|
150 else
|
pascal@24131
|
151 - document.write("<TD VALIGN=TOP><A HREF=\"JavaScript:Move(", x + Row * y, ")\">",
|
pascal@24131
|
152 - "<IMG align=middle class=r border=0 src=\"", level[x + Row * y], ".gif\"</A><\/TD>")
|
pascal@24131
|
153 + document.write("<TD VALIGN=TOP><A HREF=\"JavaScript:Move(", i, ")\">",
|
pascal@24131
|
154 + "<IMG align=middle class=r border=0 src=\"", level[i], ".gif\"</A><\/TD>")
|
pascal@24131
|
155 }
|
pascal@24131
|
156 document.write("<\/TR>")
|
pascal@24131
|
157 }
|