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
5 lines
1.8 KiB
JavaScript
5 lines
1.8 KiB
JavaScript
function Grid(size,previousState){this.size=size;this.cells=previousState?this.fromState(previousState):this.empty();}
|
|
Grid.prototype.empty=function(){var cells=[];for(var x=0;x<this.size;x++){var row=cells[x]=[];for(var y=0;y<this.size;y++){row.push(null);}}
|
|
return cells;};Grid.prototype.fromState=function(state){var cells=[];for(var x=0;x<this.size;x++){var row=cells[x]=[];for(var y=0;y<this.size;y++){var tile=state[x][y];row.push(tile?new Tile(tile.position,tile.value):null);}}
|
|
return cells;};Grid.prototype.randomAvailableCell=function(){var cells=this.availableCells();if(cells.length){return cells[Math.floor(Math.random()*cells.length)];}};Grid.prototype.availableCells=function(){var cells=[];this.eachCell(function(x,y,tile){if(!tile){cells.push({x:x,y:y});}});return cells;};Grid.prototype.eachCell=function(callback){for(var x=0;x<this.size;x++){for(var y=0;y<this.size;y++){callback(x,y,this.cells[x][y]);}}};Grid.prototype.cellsAvailable=function(){return!!this.availableCells().length;};Grid.prototype.cellAvailable=function(cell){return!this.cellOccupied(cell);};Grid.prototype.cellOccupied=function(cell){return!!this.cellContent(cell);};Grid.prototype.cellContent=function(cell){if(this.withinBounds(cell)){return this.cells[cell.x][cell.y];}else{return null;}};Grid.prototype.insertTile=function(tile){this.cells[tile.x][tile.y]=tile;};Grid.prototype.removeTile=function(tile){this.cells[tile.x][tile.y]=null;};Grid.prototype.withinBounds=function(position){return position.x>=0&&position.x<this.size&&position.y>=0&&position.y<this.size;};Grid.prototype.serialize=function(){var cellState=[];for(var x=0;x<this.size;x++){var row=cellState[x]=[];for(var y=0;y<this.size;y++){row.push(this.cells[x][y]?this.cells[x][y].serialize():null);}}
|
|
return{size:this.size,cells:cellState};}; |