Sokoban
Sokoban with swipe controls in coffeescript.
by Dan Wolfe
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/phaser/2.1.3/phaser.min.js"></script>
CSS
body{
background: #000000;
padding:0px;
margin:0px;
}
CoffeeScript
CRATE = undefined
EMPTY = undefined
PLAYER = undefined
SPOT = undefined
WALL = undefined
beginSwipe = undefined
crates = undefined
endSwipe = undefined
endX = undefined
endY = undefined
game = undefined
goFullScreen = undefined
isCrate = undefined
isWalkable = undefined
level = undefined
move = undefined
moveCrate = undefined
movePlayer = undefined
onCreate = undefined
onPreload = undefined
player = undefined
startX = undefined
startY = undefined
tileSize = undefined
onPreload = ->
game.load.crossOrigin = 'anonymous'
game.load.spritesheet "tiles", "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAAoCAIAAACq4XLCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAT5JREFUeNrs3EFthUAUBdBPUwNYwML3hAWQABbQggSwgAUk0EW7ZBYvHTKUnrOcTBgg3AzJDVTDMLxKWNe1yLrv97vIutu2FVm3aZrT8b7vsxw/9fz8t+v9eAG/JkggSCBIIEiAIIEgwd18ugXfUj1DqjeIzk+p6zrL+e/7Hpq/LEuWded5Ds2fpul0vOu60/FxHE/H27a91fXakcCrHQgSCBIgSCBIIEjwQOEeKdV7RHuMu7m6Lyol+h3OcRyn41VVhY6T6nmifVFqfup5y/XdkR0JBAkECQQJECQQJBAkIN4j/fW+KKXU90hXi55/tC+K/tcu2hdFv0eKXm+u+2lHAq92IEggSIAggSCBIMED+a/dj2j/k6svulsvd3UPk+p/Uvch+v+6UtdrRwKvdiBIIEiAIIEggSDBA30JMACyrmqBko4XEgAAAABJRU5ErkJggg==", 40, 40
return
goFullScreen = ->
game.scale.pageAlignHorizontally = true
game.scale.pageAlignVertically = true
game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL
game.scale.setScreenSize true
return
onCreate = ->
fixedGroup = undefined
i = undefined
j = undefined
movingGroup = undefined
player = undefined
tile = undefined
goFullScreen()
fixedGroup = game.add.group()
movingGroup = game.add.group()
tile = undefined
i = 0
while i < level.length
crates[i] = []
j = 0
while j < level[i].length
crates[i][j] = null
switch level[j][i]
when PLAYER, PLAYER + SPOT
player = game.add.sprite(40 * i, 40 * j, "tiles")
player.frame = level[j][i]
player.posX = i
player.posY = j
movingGroup.add player
tile = game.add.sprite(40 * i, 40 * j,...