new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
26 lines
3.9 KiB
JavaScript
26 lines
3.9 KiB
JavaScript
'use strict';function Sokoban(patterns){this.mapIndex=0;var _map=Rss.Matrix.clone(maps[this.mapIndex]),_originalMap=Rss.Matrix.clone(maps[this.mapIndex]),w=_map[0].length,h=_map.length,grid=new Rss.Grid(w,h,32),self=this;var _drawMap=function(){var i,j;for(i=0;i<_map.length;i++){for(j=0;j<_map[i].length;j++){grid.fillSquare(j,i,patterns[_map[i][j]]);}}}
|
|
var _getCoordOfKeeper=function(){var x,y,i,j;for(i=0;i<_map.length;i++){if(_map[i].indexOf(6)!==-1||_map[i].indexOf(7)!==-1){x=_map[i].indexOf(6)!==-1?_map[i].indexOf(6):_map[i].indexOf(7);y=i;break;}}
|
|
return[x,y];}
|
|
var _checkIfFinished=function(){var finished=true,i,j;for(i=0;i<_map.length;i++){for(j=0;j<_map[i].length;j++){if(_map[i][j]==3||_map[i][j]==4){finished=false;}}}
|
|
if(finished){alert('You have completed this level, the next stage will level now.');_playNextMap();}}
|
|
var _playNextMap=function(){self.playMap(self.mapIndex+1);}
|
|
this.playMap=function(mapIndex){this.mapIndex=mapIndex;grid.destroy();this.mapIndex%=maps.length;_map=Rss.Matrix.clone(maps[this.mapIndex]);_originalMap=Rss.Matrix.clone(maps[this.mapIndex]),w=_map[0].length,h=_map.length,grid=new Rss.Grid(w,h,32);this.play();}
|
|
this.play=function(){_drawMap();this.emit('stageStarted');}
|
|
this.restartStage=function(){_map=Rss.Matrix.clone(_originalMap);_drawMap();}
|
|
this.moveLeft=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y][x-1]==0||_map[y][x-1]==1)
|
|
return;if(_map[y][x-1]==2){_map[y][x-1]=6;moved=true;}else if(_map[y][x-1]==3){_map[y][x-1]=7;moved=true;}else if(_map[y][x-1]==4){if(_map[y][x-2]==2){_map[y][x-2]=4;_map[y][x-1]=6;moved=true;}else if(_map[y][x-2]==3){_map[y][x-2]=5;_map[y][x-1]=6;moved=true;}}else if(_map[y][x-1]==5){if(_map[y][x-2]==2){_map[y][x-2]=4;_map[y][x-1]=7;moved=true;}else if(_map[y][x-2]==3){_map[y][x-2]=5;_map[y][x-1]=7;moved=true;}}
|
|
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
|
|
_drawMap();_checkIfFinished();}
|
|
this.moveRight=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y][x+1]==0||_map[y][x+1]==1)
|
|
return;if(_map[y][x+1]==2){_map[y][x+1]=6;moved=true;}else if(_map[y][x+1]==3){_map[y][x+1]=7;moved=true;}else if(_map[y][x+1]==4){if(_map[y][x+2]==2){_map[y][x+2]=4;_map[y][x+1]=6;moved=true;}else if(_map[y][x+2]==3){_map[y][x+2]=5;_map[y][x+1]=6;moved=true;}}else if(_map[y][x+1]==5){if(_map[y][x+2]==2){_map[y][x+2]=4;_map[y][x+1]=7;moved=true;}else if(_map[y][x+2]==3){_map[y][x+2]=5;_map[y][x+1]=7;moved=true;}}
|
|
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
|
|
_drawMap();_checkIfFinished();}
|
|
this.moveUp=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y-1][x]==0||_map[y-1][x]==1)
|
|
return;if(_map[y-1][x]==2){_map[y-1][x]=6;moved=true;}else if(_map[y-1][x]==3){_map[y-1][x]=7;moved=true;}else if(_map[y-1][x]==4){if(_map[y-2][x]==2){_map[y-2][x]=4;_map[y-1][x]=6;moved=true;}else if(_map[y-2][x]==3){_map[y-2][x]=5;_map[y-1][x]=6;moved=true;}}else if(_map[y-1][x]==5){if(_map[y-2][x]==2){_map[y-2][x]=4;_map[y-1][x]=7;moved=true;}else if(_map[y-2][x]==3){_map[y-2][x]=5;_map[y-1][x]=7;moved=true;}}
|
|
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
|
|
_drawMap();_checkIfFinished();}
|
|
this.moveDown=function(){var coords=_getCoordOfKeeper();var x=coords[0],y=coords[1],moved=false;if(_map[y+1][x]==0||_map[y+1][x]==1)
|
|
return;if(_map[y+1][x]==2){_map[y+1][x]=6;moved=true;}else if(_map[y+1][x]==3){_map[y+1][x]=7;moved=true;}else if(_map[y+1][x]==4){if(_map[y+2][x]==2){_map[y+2][x]=4;_map[y+1][x]=6;moved=true;}else if(_map[y+2][x]==3){_map[y+2][x]=5;_map[y+1][x]=6;moved=true;}}else if(_map[y+1][x]==5){if(_map[y+2][x]==2){_map[y+2][x]=4;_map[y+1][x]=7;moved=true;}else if(_map[y+2][x]==3){_map[y+2][x]=5;_map[y+1][x]=7;moved=true;}}
|
|
if(moved){if(_map[y][x]==6){_map[y][x]=2;}else if(_map[y][x]==7){_map[y][x]=3;}}
|
|
_drawMap();_checkIfFinished();}}
|
|
Sokoban.prototype=new Rss.EventEmitter(); |