网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
JS
】
细胞生死的判断
作者:
zhouqimark
/ 发布于
2014/7/7
/
565
引用别人的基于html4的生命游戏,添加了stop功能。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <link href="css1.css" rel="stylesheet" type="text/css"> </head> <body> <canvas id="mycanvas" width="500" height="500" onclick="mouseClick(event)"></canvas> <button onClick="start()">start</button> <button onclick="stop()">stop</button> <script type="text/javascript"> var xOffset = 20; var yOffset = 20; var gridSize = 40; var size = 10; var myArray = new Array([1, 1 ,0, 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, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 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, 0, 0, 0, 0]); var myCanvas = document.getElementById("mycanvas"); var ctxt = myCanvas.getContext("2d"); ctxt.fillStyle = "#ff0000"; paint(); function paint(){ ctxt.fillStyle = "#eeeeee"; ctxt.fillRect(0, 0, 500, 500); ctxt.fillStyle = "#00ff00"; for(var i = 0; i <= size; i++){ ctxt.moveTo(xOffset, yOffset + i * gridSize); ctxt.lineTo(xOffset + gridSize*size, yOffset + i*gridSize); } for(var i = 0; i <= size; i++){ ctxt.moveTo(xOffset + i*gridSize, yOffset); ctxt.lineTo(xOffset + i*gridSize, yOffset + gridSize*size); } ctxt.stroke(); for(var x = 0; x<myArray.length; x++){ for(var y = 0; y<myArray[x].length; y++){ if(myArray[x][y]){ ctxt.fillRect(xOffset + x*gridSize, yOffset + y*gridSize, gridSize -1, gridSize-1); } } } } <!--鼠标对canvas翻转> function mouseClick(event) { var x = parseInt((event.layerX - xOffset) / gridSize); var y = parseInt((event.layerY - yOffset) / gridSize); if(myArray[x][y]){ myArray[x][y] = 0; }else{ myArray[x][y] = 1; } paint(); } <!--判定细胞的生死,引入aroundCount()方法> function reverse(){ var copy = myArray; for(var i = 0; i < copy.length; i++){ for(var j = 0; j < copy.length; j++){ var count = aroundCount(i, j); if(count == 3){ copy[i][j] = 1; }else if(count == 2){ }else{ copy[i][j] = 0; } } } myArray = copy; } <!--定义aroundCount判断除了该细胞周围的细胞个数> 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>=myArray.length || j < 0 || j>=myArray.length){ continue; } if(myArray[i][j]){ count++; } } } if(myArray[x][y]){ count--; } return count; } function start(){ timeID = setInterval(function(){ reverse(); paint(); },1000); } function stop(){ clearInterval(timeID); } </script> </body> </html>
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
细胞生死
同语言下
.
Jquery搜索框获取回车事件
.
H5页面添加倒计时,然后自动跳转
.
通过user-agent判断h5页面是在哪个手机App(QQ、微信
.
nginx 禁止未绑定的域名访问
.
JavaScript 获取按键,并屏蔽系统 Window 事件
.
H5之只允许微信浏览器打开,禁止从外部浏览器访问
.
微信打开网址添加在浏览器中打开提示的办法
.
实现JS复制、粘贴,Chrome/Firefox下可用
.
video视频播放,play()、pause()、duration时长、onen
.
HTML5实现MP3上传前的预览和播放时长的获取
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
判断用户输入的是否为IP地址
zhouqimark
贡献的其它代码
(
1
)
.
细胞生死的判断
地图
本站
我们
服务
版权
联系
回馈
博客