Skip to content

Instantly share code, notes, and snippets.

@kaiquewdev
Last active December 10, 2015 01:58
Show Gist options
  • Select an option

  • Save kaiquewdev/4364198 to your computer and use it in GitHub Desktop.

Select an option

Save kaiquewdev/4364198 to your computer and use it in GitHub Desktop.
var game = exports;
game.of = {};
game.of.life = function () {
var self = this;
self.init = function ( turns, width, height ) {
self.board = new Array( height );
for ( var x = 0; x < height; x++ ) {
self.board[x] = new Array( width );
for ( var y = 0; y < width; y++ ) {
self.board[x][y] = Math.round( Math.random() );
}
}
self.turns = turns;
};
self.nextGen = function () {
var boardHeightSize = self.board.length;
self.nextBoard = new Array( boardHeightSize );
for ( var i = 0; i < boardHeightSize; i++ ) {
var boardWidthSize = self.board[i].length;
self.nextBoard[i] = new Array( boardWidthSize );
}
for ( var x = 0; x < boardHeightSize; x++ ) {
var boardWidthSize = self.board[x].length;
for ( var y = 0; y < boardWidthSize; y++ ) {
var n = 0;
for ( var dx = -1; dx <= 1; dx++ ) {
for ( var dy = -1; dy <= 1; dy++ ) {
if ( dx === 0 && dy === 0 ) {
} else if (
typeof (
self.board[x+dx]
) !== 'undefined' &&
typeof (
self.board[x+dx][y+dy]
) !== 'undefined' &&
self.board[x+dx][y+dy]
) {
n += 1;
}
}
}
var cell = self.board[x][y];
switch (n) {
case 0:
case 1:
cell = 0;
break;
case 2:
break;
case 3:
cell = 1;
break;
default:
cell = 0;
};
self.nextBoard[x][y] = cell;
}
}
self.board = self.nextBoard.slice();
};
self.print = function () {
var boardHeigthSize = self.board.length;
for ( var x = 0; x < boardHeigthSize; x++ ) {
var boardWidthSize = self.board[x].length,
seed = '';
for ( var y = 0; y < boardWidthSize; y++ ) {
if ( self.board[x][y] ) {
seed += '.';
} else {
seed += ' ';
}
}
console.log( seed );
}
};
self.start = function () {
setInterval(function () {
self.print();
self.nextGen();
}, 1200);
};
};
var gen = new game.of.life();
gen.init(1000, 20, 20);
gen.start();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment