html5 生存游戏,html5版生命游戏

canvas {

background: #eeeeee;

border: 1px solid #c3c3c3;

}

button {

background: #aaaaaa;

}

start

var xOffset = 20;

var yOffset = 20;

var gridSize = 40;

var size = 10;

var board = new Array(

[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],

[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0],

[0, 0, 0, 0, 1, 0, 1, 0, 0, 0],

[0, 0, 0, 0, 1, 0, 1, 0, 0, 0],

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);

var c = document.getElementById("myCanvas");

var cxt = c.getContext("2d");

cxt.fillStyle = "#FF0000";

paint();

function paint() {

cxt.fillStyle = "#eeeeee";

cxt.fillRect(0, 0, 500, 500);

cxt.fillStyle = "#00ff00";

for (var i = 0; i <= size; i++) {

cxt.moveTo(xOffset, yOffset + i * gridSize);

cxt.lineTo(xOffset + gridSize * size, yOffset + i * gridSize);

}

for (var i = 0; i <= size; i++) {

cxt.moveTo(xOffset + i * gridSize, yOffset);

cxt.lineTo(xOffset + i * gridSize, yOffset + gridSize * size);

}

cxt.stroke();

for (var x = 0; x < board.length; x++) {

for (var y = 0; y < board[x].length; y++) {

//alert(x+" "+y+" "+board[x][y]);

if (board[x][y] == 1) {

cxt.fillRect(xOffset + x * gridSize, yOffset + y * gridSize, gridSize - 1, gridSize - 1);

}

}

}

}

function mouseClick(event) {

var x = parseInt((event.layerX - xOffset) / gridSize);

var y = parseInt((event.layerY - yOffset) / gridSize);

board[x][y] = !board[x][y];

paint();

}

function reverse() {

var copy = board;

for (var i = 0; i < board.length; i++) {

for (var j = 0; j < board[i].length; j++) {

var count = aroundCount(i, j);

if (count == 3) {

copy[i][j] = 1;

} else if (count == 2) {

} else {

copy[i][j] = 0;

}

}

}

board = copy;

}

function aroundCount(x, y) {

var count = 0;

for (var i = x - 1; i <= x + 1; i++) {

for (var j = y - 1; j <= y + 1; j++) {

if (i < 0 || i >= board.length || j < 0 || j >= board.length) {

continue;

}

if (board[i][j]) {

count++;

}

}

}

if (board[x][y]) {

count--;

}

return count;

}

function start() {

setTimeout(function () {

reverse();

paint();

setTimeout(arguments.callee, 1000);

}, 1000);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值