Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
88
Task/Wireworld/JavaScript/wireworld.js
Normal file
88
Task/Wireworld/JavaScript/wireworld.js
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
var ctx, sizeW, sizeH, scl = 10, map, tmp;
|
||||
function getNeighbour( i, j ) {
|
||||
var ii, jj, c = 0;
|
||||
for( var b = -1; b < 2; b++ ) {
|
||||
for( var a = -1; a < 2; a++ ) {
|
||||
ii = i + a; jj = j + b;
|
||||
if( ii < 0 || ii >= sizeW || jj < 0 || jj >= sizeH ) continue;
|
||||
if( map[ii][jj] == 1 ) c++;
|
||||
}
|
||||
}
|
||||
return ( c == 1 || c == 2 );
|
||||
}
|
||||
function simulate() {
|
||||
drawWorld();
|
||||
for( var j = 0; j < sizeH; j++ ) {
|
||||
for( var i = 0; i < sizeW; i++ ) {
|
||||
switch( map[i][j] ) {
|
||||
case 0: tmp[i][j] = 0; break;
|
||||
case 1: tmp[i][j] = 2; break;
|
||||
case 2: tmp[i][j] = 3; break;
|
||||
case 3:
|
||||
if( getNeighbour( i, j ) ) tmp[i][j] = 1;
|
||||
else tmp[i][j] = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
[tmp, map] = [map, tmp];
|
||||
setTimeout( simulate, 200 );
|
||||
}
|
||||
function drawWorld() {
|
||||
ctx.fillStyle = "#000"; ctx.fillRect( 0, 0, sizeW * scl, sizeH * scl );
|
||||
for( var j = 0; j < sizeH; j++ ) {
|
||||
for( var i = 0; i < sizeW; i++ ) {
|
||||
switch( map[i][j] ) {
|
||||
case 0: continue;
|
||||
case 1: ctx.fillStyle = "#03f"; break;
|
||||
case 2: ctx.fillStyle = "#f30"; break;
|
||||
case 3: ctx.fillStyle = "#ff3"; break;
|
||||
}
|
||||
ctx.fillRect( i, j, 1, 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
function openFile( event ) {
|
||||
var input = event.target;
|
||||
var reader = new FileReader();
|
||||
reader.onload = function() {
|
||||
createWorld( reader.result );
|
||||
};
|
||||
reader.readAsText(input.files[0]);
|
||||
}
|
||||
function createWorld( txt ) {
|
||||
var l = txt.split( "\n" );
|
||||
sizeW = parseInt( l[0] );
|
||||
sizeH = parseInt( l[1] );
|
||||
map = new Array( sizeW );
|
||||
tmp = new Array( sizeW );
|
||||
for( var i = 0; i < sizeW; i++ ) {
|
||||
map[i] = new Array( sizeH );
|
||||
tmp[i] = new Array( sizeH );
|
||||
for( var j = 0; j < sizeH; j++ ) {
|
||||
map[i][j] = tmp[i][j] = 0;
|
||||
}
|
||||
}
|
||||
var t;
|
||||
for( var j = 0; j < sizeH; j++ ) {
|
||||
for( var i = 0; i < sizeW; i++ ) {
|
||||
switch( l[j + 2][i] ) {
|
||||
case " ": t = 0; break;
|
||||
case "H": t = 1; break;
|
||||
case "t": t = 2; break;
|
||||
case ".": t = 3; break;
|
||||
}
|
||||
map[i][j] = t;
|
||||
}
|
||||
}
|
||||
init();
|
||||
}
|
||||
function init() {
|
||||
var canvas = document.createElement( "canvas" );
|
||||
canvas.width = sizeW * scl;
|
||||
canvas.height = sizeH * scl;
|
||||
ctx = canvas.getContext( "2d" );
|
||||
ctx.scale( scl, scl );
|
||||
document.body.appendChild( canvas );
|
||||
simulate();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue