224 lines
5.5 KiB
HTML
224 lines
5.5 KiB
HTML
<html>
|
|
<meta charset="UTF-8" />
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Sokobanya</title>
|
|
<script src="assets/maps/microban.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<style>
|
|
body {
|
|
font-family: monospace;
|
|
font-size: 30px;
|
|
background-color: #efd4af;
|
|
}
|
|
|
|
.container {
|
|
display: flex;
|
|
justify-content: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.opts {
|
|
position: absolute;
|
|
top: 10;
|
|
right: 10;
|
|
font-size: 15px;
|
|
}
|
|
|
|
.opts-menu {
|
|
text-align: right;
|
|
padding: 5px;
|
|
position: absolute;
|
|
top: 40;
|
|
right: 10;
|
|
font-size: 15px;
|
|
width: auto;
|
|
height: auto;
|
|
background-color: ghostwhite;
|
|
display: none;
|
|
}
|
|
|
|
#map {
|
|
white-space: pre;
|
|
}
|
|
|
|
#map > img {
|
|
height: 50px;
|
|
width: 50px;
|
|
}
|
|
|
|
#dpad {
|
|
margin-top: 20px;
|
|
display: none;
|
|
}
|
|
|
|
#stats {
|
|
font-size: 20px;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
pre {
|
|
color: darkblue;
|
|
margin-bottom: -19px;
|
|
}
|
|
|
|
@media (max-width: 481px) {
|
|
pre {
|
|
font-size: 12px;
|
|
}
|
|
|
|
#map > img {
|
|
height: 25px;
|
|
width: 25px;
|
|
}
|
|
}
|
|
|
|
a {
|
|
color: black;
|
|
text-decoration: none;
|
|
}
|
|
|
|
a:hover {
|
|
color: darkblue;
|
|
text-decoration: none;
|
|
}
|
|
|
|
a.disabled {
|
|
color: grey;
|
|
text-decoration: none;
|
|
pointer-events: none;
|
|
}
|
|
.info a {
|
|
color: darkblue;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.info a:hover {
|
|
color: green;
|
|
text-decoration: none;
|
|
}
|
|
</style>
|
|
<div class="opts">
|
|
<a href="#" onclick="toggleDisplay('opts-menu')">settings</a>
|
|
</div>
|
|
<div class="opts-menu" id="opts-menu">
|
|
<a href="#" onclick="toggleDisplay('dpad')">toggle D-Pad</a>
|
|
</div>
|
|
<center>
|
|
<pre style="margin-top: 30px">
|
|
█▀ █▀█ █▄▀ █▀█ █▄▄ ▄▀█ █▄░█ █▄█ ▄▀█
|
|
▄█ █▄█ █░█ █▄█ █▄█ █▀█ █░▀█ ░█░ █▀█
|
|
</pre>
|
|
<div id="stats">LEVEL: 0 | MOVES: 0 | LIVES: 10 | POINTS: 0</div>
|
|
</center>
|
|
<div class="container">
|
|
<div id="map"></div>
|
|
</div>
|
|
<div class="container">
|
|
<img id="dpad" src="assets/img/sprites/dpad.png" usemap="#dpadmap" />
|
|
<map name="dpadmap">
|
|
<!-- up -->
|
|
<area
|
|
shape="rect"
|
|
coords="50,1,130,50"
|
|
alt="Computer"
|
|
href="#"
|
|
onclick="g.mapInstance.move('up'); g.mapInstance.loop()"
|
|
/>
|
|
<!-- down -->
|
|
<area
|
|
shape="rect"
|
|
coords="50,125,130,190"
|
|
alt="Computer"
|
|
href="#"
|
|
onclick="g.mapInstance.move('down'); g.mapInstance.loop()"
|
|
/>
|
|
<!-- left -->
|
|
<area
|
|
shape="rect"
|
|
coords="1,55,58,120"
|
|
alt="Computer"
|
|
href="#"
|
|
onclick="g.mapInstance.move('left'); g.mapInstance.loop()"
|
|
/>
|
|
<!-- right -->
|
|
<area
|
|
shape="rect"
|
|
coords="130,55,180,120"
|
|
alt="Computer"
|
|
href="#"
|
|
onclick="g.mapInstance.move('right'); g.mapInstance.loop()"
|
|
/>
|
|
</map>
|
|
</div>
|
|
<div class="container" style="margin-top: 20px; margin-bottom: 80px">
|
|
<a href="#" onclick="g.reset()" style="margin-right: 50px">[r]eset</a>
|
|
<a
|
|
href="#"
|
|
onclick="g.mapInstance.continue()"
|
|
class="disabled"
|
|
id="continueLink"
|
|
>[c]ontinue</a
|
|
>
|
|
</div>
|
|
<hr />
|
|
<div style="padding: 20px" class="info">
|
|
<h4>How To Play:</h4>
|
|
You are an old man working in Sokobanya, a luxury Russian bath house. You
|
|
need to move pieces of coal to the stoves in order to keep the saunas hot.
|
|
Try to move all pieces of coal in the shortest amount of moves possible!
|
|
<h4>Controls:</h4>
|
|
<ul>
|
|
<li>WASD</li>
|
|
<li>Arrow Keys</li>
|
|
<li>VIM keys [hjkl]</li>
|
|
</ul>
|
|
<h4>Credits:</h4>
|
|
<ul>
|
|
<li>
|
|
All levels STOLEN from
|
|
<a
|
|
href="http://www.sneezingtiger.com/sokoban/levels.html"
|
|
target="_blank"
|
|
>here</a
|
|
>
|
|
</li>
|
|
<li>
|
|
Code and Sprites by
|
|
<a href="https://www.domdit.com" target="_blank">Dominic DiTaranto</a>
|
|
</li>
|
|
<li>
|
|
Check out the code
|
|
<a href="https://git.domdit.com/dominic/sokobanya">here</a>
|
|
</li>
|
|
</ul>
|
|
<h4>UPDATES:</h4>
|
|
<li>
|
|
(09/07/25) v1.1: released mobile support via toggleable Dpad, see
|
|
settings at top right of page!
|
|
</li>
|
|
<h4>TODO:</h4>
|
|
<ul>
|
|
<li><s>Mobile Support</s></li>
|
|
<li>Selectable levels upon completion</li>
|
|
<li>Create a cool song and SFX</li>
|
|
<li>Points system</li>
|
|
<li>Steam animation when you beat a level</li>
|
|
<li>Add more level sets (worlds)</li>
|
|
</ul>
|
|
</div>
|
|
<script src="assets/script.js"></script>
|
|
<script>
|
|
function toggleDisplay(elemId) {
|
|
let elem = document.getElementById(elemId);
|
|
if (elem.style.display === "none" || elem.style.display === "") {
|
|
elem.style.display = "block";
|
|
} else {
|
|
elem.style.display = "none";
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|