Javascript/オセロ

javascript
var turn = 1;
var checkPiece = function(x, y, flip){
	var ret = 0;
	for(var dx=-1; dx<=1; dx++){
		for(var dy=-1; dy<=1; dy++){
			if(dx==0 && dy==0){
				continue;
			}
			var nx = x + dx;
			var ny = y + dy;
			var n = 0;
			while(board[nx][ny] == 3 - turn){
				n++;
				nx += dx;
				ny += dy;
			}
			if(n>0 && board[nx][ny] == turn){
				ret += n;
				if(flip){
					nx = x + dx;
					ny = y + dy;
					while(board[nx][ny] == 3 - turn){
						board[nx][ny] = turn;
						nx += dx;
						ny += dy;
					}
					board[x][y] = turn;
				}
			}
		}
	}
	return ret;
};

var piece;
var showBoard = function(){
	var b = document.getElementById("board");
	while(b.firstChild){
		b.removeChild(b.firstChild);
	}
	for(var y=1; y<=8; y++){
		for(var x=1; x<=8; x++){
			var c = piece[board[x][y]].cloneNode(true);
			c.style.left = ((x - 1) * 51) + "px";
			c.style.top = ((y - 1) * 51) + "px";
			b.appendChild(c);
			if(board[x][y] == 0){
				(function(){
					var _x = x, _y = y;
					c.onclick = function(){
						if(checkPiece(_x, _y, true)){
							showBoard();
							turn = 3 - turn;
						}
					};
				})();
			}
		}
	}
};

var board = [];
window.onload = function(){
	var cell = document.getElementById("cell");
	var black = document.getElementById("black");
	var white = document.getElementById("white");
	piece = [cell, black, white];
	for(var i=0; i<10; i++){
		board[i] = [];
		for(var j=0; j<10; j++){
			board[i][j] = 0;
		}
	}
	board[4][5] = 1;
	board[5][4] = 1;
	board[4][4] = 2;
	board[5][5] = 2;
	showBoard();
}