wok annotate sokojs/stuff/undo.u @ rev 24986

Up nettle 3.7.3 again, need glib-networking rebuild to no break midori
author Stanislas Leduc <shann@slitaz.org>
date Wed May 11 08:28:28 2022 -0400 (2022-05-11)
parents db9d9cb3c164
children
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 }