rev |
line source |
pascal@24127
|
1 #!/bin/sh
|
pascal@24127
|
2
|
pascal@24130
|
3 [ -s level.htm ] && rm level.htm && patch -p0 <<EOT
|
pascal@24127
|
4 --- main.htm
|
pascal@24127
|
5 +++ main.htm
|
pascal@24131
|
6 @@ -19,7 +19,11 @@
|
pascal@24131
|
7 width:30px;
|
pascal@24131
|
8 height:30px;
|
pascal@24131
|
9 }
|
pascal@24131
|
10 -
|
pascal@24131
|
11 +a{
|
pascal@24131
|
12 +color:red;
|
pascal@24131
|
13 +text-decoration:none;
|
pascal@24131
|
14 +display:block;
|
pascal@24131
|
15 +}
|
pascal@24131
|
16 @media screen and (max-width: 450px) {
|
pascal@24127
|
17 img.r{
|
pascal@24131
|
18 width:29px;
|
pascal@24131
|
19 @@ -77,8 +81,11 @@
|
pascal@24127
|
20 var ie4= (navigator.appName == "Microsoft Internet Explorer")?1:0;
|
pascal@24127
|
21 var ns4= (navigator.appName=="Netscape")?1:0;
|
pascal@24127
|
22
|
pascal@24127
|
23 -Row = 16
|
pascal@24127
|
24 -Col = 16
|
pascal@24127
|
25 +Row = eval(parent.frames[0].document.forms[1].elements[0].value)
|
pascal@24127
|
26 +Col = eval(parent.frames[0].document.forms[1].elements[1].value)
|
pascal@24131
|
27 +CurSet = parent.frames[0].document.forms[1].elements[2].value
|
pascal@24131
|
28 +maxLevel = eval(parent.frames[0].document.forms[1].elements[3].value)
|
pascal@24131
|
29 +nbLevel = eval(parent.frames[0].document.forms[0].elements[(Row*Col)+1].value)
|
pascal@24127
|
30
|
pascal@24127
|
31 function Nmajevent(evenement)
|
pascal@24127
|
32 {
|
pascal@24131
|
33 @@ -124,6 +131,10 @@
|
pascal@24127
|
34
|
pascal@24131
|
35 <script type="text/javascript">
|
pascal@24131
|
36 <!--
|
pascal@24131
|
37 +if (parent.window.location.search.length > 1 && parent.frames[0].location.hash.length == 0 &&
|
pascal@24131
|
38 + parent.frames[0].location.href.indexOf(parent.window.location.search.substring(1)) < 0)
|
pascal@24131
|
39 + parent.frames[0].location = parent.window.location.search.substring(1)
|
pascal@24131
|
40 +
|
pascal@24131
|
41 if (document.all) {
|
pascal@24131
|
42 top.window.resizeTo(800, 600);
|
pascal@24131
|
43 } else if (document.layers || document.getElementById) {
|
pascal@24131
|
44 @@ -151,13 +162,26 @@
|
pascal@24127
|
45 manD = new Image(30, 30); manD.src = "9.gif"; // down
|
pascal@24127
|
46
|
pascal@24127
|
47 level = new Array()
|
pascal@24127
|
48 -maxLevel = 97
|
pascal@24127
|
49 moves = 0
|
pascal@24131
|
50 saved = ""
|
pascal@24127
|
51
|
pascal@24131
|
52 +function urlself()
|
pascal@24131
|
53 +{
|
pascal@24134
|
54 + var l = parent.window.location.href+"?"
|
pascal@24134
|
55 + return l.substring(0, l.search(/[#?]/))+
|
pascal@24131
|
56 + "?"+CurSet+"/level"+nbLevel+".htm#"+saved
|
pascal@24131
|
57 +}
|
pascal@24131
|
58 +
|
pascal@24131
|
59 +function seturl()
|
pascal@24131
|
60 +{
|
pascal@24131
|
61 + var e = document.getElementById("urlsave")
|
pascal@24131
|
62 + e.setAttribute("href", urlself());
|
pascal@24131
|
63 +}
|
pascal@24131
|
64 +
|
pascal@24127
|
65 function ReloadLevel() {
|
pascal@24131
|
66 manpos = parent.frames[0].document.forms[0].elements[Row*Col].value
|
pascal@24131
|
67 moves = 0
|
pascal@24131
|
68 + saved = ""
|
pascal@24131
|
69 window.status = ""
|
pascal@24131
|
70 nbBoxin = 0
|
pascal@24131
|
71 for (i = 0 ; i < Row * Col; i++) {
|
pascal@24131
|
72 @@ -168,9 +192,18 @@
|
pascal@24131
|
73 document.images[manpos].src = eval("manD.src")
|
pascal@24131
|
74 }
|
pascal@24127
|
75
|
pascal@24131
|
76 +function Go(d,n) {
|
pascal@24131
|
77 + parent.frames[0].document.location = d + "/level" + n + ".htm#" + d
|
pascal@24131
|
78 + seturl()
|
pascal@24131
|
79 +}
|
pascal@24131
|
80 +
|
pascal@24127
|
81 function GoLevel(n) {
|
pascal@24127
|
82 if (n == nbLevel) ReloadLevel()
|
pascal@24127
|
83 - parent.frames[0].document.location = "level" + n + ".htm"
|
pascal@24131
|
84 + Go(CurSet, n)
|
pascal@24127
|
85 +}
|
pascal@24127
|
86 +
|
pascal@24127
|
87 +function GoSet() {
|
pascal@24131
|
88 + Go(document.getElementById('set').value, 0)
|
pascal@24127
|
89 }
|
pascal@24127
|
90
|
pascal@24127
|
91 function dir(d) {
|
pascal@24131
|
92 @@ -214,6 +247,7 @@
|
pascal@24131
|
93 m = eval("man"+c.toUpperCase()+".src")
|
pascal@24131
|
94 } while (c == c.toLowerCase())
|
pascal@24131
|
95 document.images[manpos].src = m
|
pascal@24131
|
96 + seturl()
|
pascal@24131
|
97 }
|
pascal@24127
|
98 }
|
pascal@24127
|
99
|
pascal@24131
|
100 @@ -224,9 +258,9 @@
|
pascal@24131
|
101 var m = dir(d).toLowerCase()
|
pascal@24131
|
102 if (level[a] == boxin || level[a] == boxout) {
|
pascal@24131
|
103 b = a + d
|
pascal@24131
|
104 - ++moves
|
pascal@24131
|
105 m = dir(d)
|
pascal@24131
|
106 if (level[b] == floor || level[b] == dest) {
|
pascal@24131
|
107 + ++moves
|
pascal@24131
|
108 level[a] == boxin ? (level[a] = dest, nbBoxin++) : level[a] = floor
|
pascal@24131
|
109 level[b] == dest ? (level[b] = boxin, nbBoxin--) : level[b] = boxout
|
pascal@24131
|
110 document.images[b].src = eval("img" + level[b] + ".src")
|
pascal@24131
|
111 @@ -243,7 +277,7 @@
|
pascal@24127
|
112 if (nbBoxin == 0) {
|
pascal@24127
|
113 if (nbLevel < maxLevel) {
|
pascal@24127
|
114 alert("You have done a good job !")
|
pascal@24127
|
115 - parent.frames[0].location = "level" + (++nbLevel) + ".htm"
|
pascal@24131
|
116 + parent.frames[0].document.location = CurSet + "/level" + (++nbLevel) + ".htm"
|
pascal@24127
|
117 GoLevel(nbLevel)
|
pascal@24127
|
118 } else {
|
pascal@24127
|
119 alert("Congratulations !")
|
pascal@24131
|
120 @@ -251,6 +285,7 @@
|
pascal@24131
|
121 }
|
pascal@24127
|
122 }
|
pascal@24127
|
123 }
|
pascal@24131
|
124 + seturl()
|
pascal@24131
|
125 }
|
pascal@24131
|
126 window.focus()
|
pascal@24131
|
127 window.status = ""
|
pascal@24131
|
128 @@ -277,21 +312,32 @@
|
pascal@24131
|
129 }
|
pascal@24131
|
130 document.write("<\/TABLE>")
|
pascal@24131
|
131 manpos = parent.frames[0].document.forms[0].elements[Row*Col].value
|
pascal@24131
|
132 - nbLevel = parent.frames[0].document.forms[0].elements[(Row*Col)+1].value
|
pascal@24131
|
133
|
pascal@24131
|
134 document.write("</table><TABLE cellspacing=0 cellpadding=0 style='max-width:300px'><TD>")
|
pascal@24131
|
135
|
pascal@24127
|
136 document.write("<FORM>",
|
pascal@24127
|
137 "<INPUT TYPE=button onClick=\"Javascript:ReloadLevel();\" value=\"Restart\">",
|
pascal@24127
|
138 "<INPUT TYPE=button onClick=\"Javascript:UndoMove();\" value=\"Undo\"><p id=\"moves\" style=\"color:white\">0 moves</p></center>")
|
pascal@24127
|
139 + style="style='font-family:Courier New;font-size:14px;font-weight:bold;border:1;border-color:0;padding:0;margin:0px;background-color:#c0c0c0;color:#404040..'"
|
pascal@24127
|
140 + document.write("<select id='set' "+style+" onChange=\"Javascript:GoSet();\">")
|
pascal@24130
|
141 + document.write("<option>Change level pack</option>");
|
pascal@24127
|
142 + document.write("<option>sokojs</option>");
|
pascal@24130
|
143 + document.write("</select><br />")
|
pascal@24130
|
144 + document.write("<body style=\"margin:0\" bgcolor=\"black\"> <b><FONT FACE=\"Comic Sans MS\" SIZE=4 COLOR=\"red\">",
|
pascal@24131
|
145 + "<a id=\"urlsave\" href=\"",urlself(),"\">",CurSet," LEVEL ",nbLevel + 1,"</a><br/>")
|
pascal@24127
|
146 for (i = 0; i <= maxLevel; i++) {
|
pascal@24127
|
147 - document.write("<INPUT style='font-family:Courier New;font-size:14px;font-weight:bold;border:1;border-color:0;padding:0;margin:0px;background-color:#c0c0c0;color:#404040รน' TYPE=\"button\" onClick=\"Javascript:GoLevel(", i, ");\" value=\"", (i<9?" ":"")+(i+1), "\">")
|
pascal@24127
|
148 + document.write("<INPUT "+style+" TYPE=\"button\" onClick=\"Javascript:GoLevel(", i, ");\" value=\"", (i<9?" ":"")+(i+1), "\">")
|
pascal@24127
|
149 }
|
pascal@24127
|
150 document.write("<\/FORM></table>")
|
pascal@24127
|
151
|
pascal@24131
|
152 document.images[manpos].src = eval("manD.src")
|
pascal@24131
|
153 +
|
pascal@24131
|
154 + if (parent.window.location.hash.length > 1 && parent.frames[0].location.hash.length == 0) {
|
pascal@24131
|
155 + for (i = 2; i <= parent.window.location.hash.length; i++)
|
pascal@24131
|
156 + Move(manpos-undoDir(parent.window.location.hash.substring(i-1,i)))
|
pascal@24131
|
157 + }
|
pascal@24131
|
158 //-->
|
pascal@24131
|
159 </script>
|
pascal@24131
|
160
|
pascal@24131
|
161 </body>
|
pascal@24131
|
162 -</html>
|
pascal@24131
|
163 \ No newline at end of file
|
pascal@24131
|
164 +</html>
|
pascal@24127
|
165 --- sokojs.htm
|
pascal@24127
|
166 +++ sokojs.htm
|
pascal@24130
|
167 @@ -22,14 +22,13 @@ Foundation, Inc., 59 Temple Place - Suit
|
pascal@24127
|
168 <html>
|
pascal@24127
|
169 <head>
|
pascal@24127
|
170 <TITLE>Sokoban (C) Michel Buze</TITLE>
|
pascal@24127
|
171 -<META HTTP-EQUIV="Keywords" CONTENT="boxworld,javascript,sokoban,jeu,jeux,game,buze,web">
|
pascal@24127
|
172 +<META HTTP-EQUIV="Content Type" CONTENT="text/html;charset=utf-8">
|
pascal@24127
|
173 <META NAME="Keywords" CONTENT="boxworld,javascript,sokoban,jeu,jeux,game,buze,web">
|
pascal@24127
|
174 <meta name="viewport" content="width=device-width, initial-scale=1">
|
pascal@24127
|
175 </head>
|
pascal@24127
|
176
|
pascal@24130
|
177 -<frameset border="0" rows="0,700,*">
|
pascal@24127
|
178 -<frame src="level0.htm">
|
pascal@24130
|
179 -<frame src="0.gif">
|
pascal@24130
|
180 +<frameset border="0" rows="0,*">
|
pascal@24127
|
181 +<frame src="sokojs/level0.htm">
|
pascal@24127
|
182 <frame src="0.gif">
|
pascal@24127
|
183 <noframes>
|
pascal@24130
|
184 <body>
|
pascal@24127
|
185 EOT
|
pascal@24130
|
186 [ -s level0.htm ] && mkdir sokojs && for l in level*.htm ; do
|
pascal@24130
|
187 col=$(sed '/^Col/!d;s|Col=||' $l)
|
pascal@24130
|
188 pos=$(sed '/write/!d;/value=\\"[0-9]/!d;s|.*value=."||;s|.".*||' $l)
|
pascal@24130
|
189 awk -vx=$(($pos%$col+2)) -vy=$(($pos/$col+10)) '{ c="@"
|
pascal@24130
|
190 if (substr($0,x,1) == ".") c="+"
|
pascal@24130
|
191 if(l++==y) $0=substr($0,1,x-1) c substr($0,x+1)
|
pascal@24130
|
192 print }' < $l | sed -e "s|1)|&.replace('+','.').replace('@','_')|" \
|
pascal@24130
|
193 -e '/level.htm/d;s|location = "|&../|;/.*main.htm/i document.write("<FORM ACTION=\\"\\">")\
|
pascal@24127
|
194 document.write("<INPUT TYPE=\\"button\\" value=\\""+Row+"\\">",\
|
pascal@24127
|
195 "<INPUT TYPE=\\"button\\" value=\\""+Col+"\\">",\
|
pascal@24127
|
196 "<INPUT TYPE=\\"button\\" value=\\"sokojs\\">",\
|
pascal@24130
|
197 "<INPUT TYPE=\\"button\\" value=\\"97\\"><\\/FORM>")' > sokojs/$l
|
pascal@24130
|
198 rm -f $l
|
pascal@24130
|
199 done
|
pascal@24131
|
200 [ -s sokojs/description.txt ] || cat > sokojs/description.txt <<EOT
|
pascal@24131
|
201 SokoJS
|
pascal@24131
|
202 Sokoban Game for Javascript
|
pascal@24131
|
203 michel.buze@gmail.com
|
pascal@24131
|
204 http://buze.michel.chez.com
|
pascal@24131
|
205 copyright Michel BUZE
|
pascal@24131
|
206 EOT
|