html5版生命游戏

只有一个.html文件,无任何依赖。

使用canvas

1.[文件] index.html ~ 4KB     下载(206)

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);

}

2.[代码][HTML]代码

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);

}

html5 生存游戏,html5版生命游戏相关推荐

  1. 【CSON原创】基于HTML5的横版射击游戏发布

    功能说明: 基于HTML5的横版射击游戏,参考自flash游戏<双面特工>.左右方向键控制移动,下方向键蹲下,上方向键跳跃,空格键射击.体验前请先关闭输入法. 该游戏基于自己开发的HTML ...

  2. C++案例:C++版生命游戏

    目录 一.生命游戏 1.生命游戏概述 2.生命演化规则:B3/S23 二.生命游戏C++实现 1.编写头文件life.h 2.编写C++程序life.cpp 3.编写头文件utility.h 4.编写 ...

  3. Java案例:Java版生命游戏

    目录 一.生命游戏 1.生命游戏概述 2.生命演化规则:B3/S23 二.生命游戏Java实现

  4. [Win32::Console]Perl终端版生命游戏

    环境,WinXP/Win7  Perl 5.16 默认循环1000次,按ESC提前退出 1 use strict; 2 use Term::ReadKey; 3 use Win32::Console; ...

  5. HTML5高度还原复古24层魔塔网页版小游戏源码

    简介: HTML5高度还原复古24层魔塔网页版小游戏源码 网盘下载地址: http://kekewl.cc/OFfi6keX7OS0 图片:

  6. html5 canvas简易版捕鱼达人游戏源码

    插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...

  7. 《游戏学习》| 水果忍者HTML5网页版在线游戏 | 源码分析

    游戏介绍 这是一款由百度JS小组提供的HTML5版切水果游戏,这款基于HTML5实现的网页版切水果游戏虽然和原版的切水果游戏相比仍有美中不足之处,但也算有声有色,画面效果也十分炫目华丽. 游戏截图 主 ...

  8. HTML5 行业首款 3D 游戏及 VR DEMO 曝出

    HTML5(以下简称H5)技术凭借跨平台.开源生态发达.易分享等优势在近几年获万千宠爱,处于爆发式增长阶段:微软.苹果.谷歌等行业巨头公司示好, 相关从业公司或千万融资或新三板挂牌.今年的游戏圈,大批 ...

  9. 【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵

    尽管还没有完工,不过 HTM5 已经被炒得沸沸扬扬.Google 不时做一些基于 HTML5 的 LOGO 和演示让人心痒不已,一些经典游戏如<割绳子>.<宝石迷阵>等都已经开 ...

最新文章

  1. LeetCode 228: Summary Ranges
  2. 使用c#实现tcp的连接和发送接收数据
  3. 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.2 内部函数与操作
  4. Photoshop绘制植物大战僵尸中的食人花
  5. android的动态注册,Android应用开发之BroadcastReceiver(广播)的静态注册和动态注册 --Android开发...
  6. CCNA课堂练习三:标准访问控制列表和扩展访问控制列表的区别
  7. SQLServer删除登录帐户
  8. 这不仅仅是html5的HTML5问题
  9. hadoop的ACL权限
  10. python识别图片上的文字_python如何一行代码实现图片文字识别
  11. Swift 后端开发
  12. 动态列从一表的数据汇总至另外一张表中
  13. 服务器虚拟机迁移的过程和步骤是什么,虚拟机迁移的详细步骤(新手如何做好虚拟机迁移)...
  14. Windows10如何在文件夹打开DOS命令窗口
  15. html图片与文字的排版6,HTML文字与排版
  16. JS 转换格林尼治时间
  17. I.MX6U 0411简介
  18. python打开操作写入excel操作
  19. 动态规划(Dynamic Programming, DP)简介
  20. 计算机专业论文docx,计算机专业毕业大学生论文.docx

热门文章

  1. electron窗口自适应_Go 限流器系列(3)自适应限流
  2. tensorflow2.0中dataset API 总结
  3. 【自然语言处理】N-最短路径法进行中文分词
  4. Chart.js-雷达图分析(参数分析+例图)
  5. 目标检测--Faster R-CNN
  6. [VSCode]中英文界面切换
  7. ASP.NET Core Web Razor Pages系列教程七: 添加新的字段
  8. css 不展示滚动条,CSS-界面滚动时不显示滚动条
  9. mysql处理含中文的SQL文件_mysql命令行还原phpMyAdmin导出的含有中文的SQL文件
  10. git服务器查看用户信息,git 查看当前git用户_新Git用户使用方法