用javascript实现元胞自动机的生命游戏
来源:互联网 发布:淘宝图片搜索 编辑:程序博客网 时间:2024/05/06 16:38
演示效果如下:
源代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>lifeGame</title>
<style type="text/css">
#canvas1{
margin: 50px auto;
display: block;
}
</style>
</head>
<body>
<canvas id="canvas1" width="400" height="400"></canvas>
</body>
<script type="text/javascript">
var canvas=document.getElementById('canvas1');
var context=canvas.getContext("2d");
for(var i=0;i<41;i++){
context.beginPath();
context.moveTo(i*10,0);
context.lineTo(i*10,400);
context.stroke();
context.moveTo(0, i*10);
context.lineTo(400,i*10);
context.stroke();
context.closePath();
}
var cellObj=function(){
this.alive=[];
for (var i = 0; i < 40; i++) {
this.alive[i]=[];
for (var j = 0; j < 40; j++) {
this.alive[i][j]=0;
}
}
}
cellObj.prototype.init=function(){
for (var i = 1; i < 39; i++) {
for (var j = 1; j < 39; j++) {
if(Math.random()<0.3)
this.alive[i][j]=1;
console.log(this.alive[i][j]);
}
}
}
cellObj.prototype.draw=function(){
for (var i = 0; i < 40; i++) {
for (var j = 0; j < 40; j++) {
if(this.alive[i][j]==1){
context.fillStyle="red";
context.fillRect(i*10+1,j*10+1,8,8);
}else{
context.fillStyle="white";
context.fillRect(i*10+1,j*10+1,8,8);
}
}
}
}
var cell=new cellObj();
cell.init();
cell.draw();
function transform(){
for (var i = 1; i < 39; i++) {
for (var j = 1; j < 39; j++) {
var sum=0;
sum=cell.alive[i][j-1] + cell.alive[i][j+1] + cell.alive[i-1][j] +
cell.alive[i+1][j] + cell.alive[i-1][j-1] + cell.alive[i-1][j+1] +
cell.alive[i+1][j-1] + cell.alive[i+1][j+1];
cell.alive[i][j]=(sum==3) | (sum==2 & cell.alive[i][j]);
}
}
}
function gameloop(){
transform();
cell.draw();
}
setInterval(gameloop,100);
</script>
</html>
- 用javascript实现元胞自动机的生命游戏
- 元胞自动机 生命游戏 Matlab实现 GUI
- 生命游戏——一个简单的元胞自动机
- C#绘图实现元胞自动机之生命的游戏(分形之美)
- 元胞自动机与生命游戏
- 元胞自动机及生命游戏
- 二维元胞自动机和生命游戏(可自定义规则)
- 用C#实现的生命游戏
- 生命游戏和细胞自动机的学习笔记
- 元胞自动机 Matlab实现表面张力
- 元胞自动机 C实现 + OpenCV界面
- 细胞自动机(生命游戏)源码
- 康威生命游戏的简单实现
- angularJS学习小记(3)----使用元胞自动机演示生命演化
- React实现生命游戏
- 生命游戏Java实现
- 元胞自动机的Java模型代码
- 基于元胞自动机的城市规划
- Android中权限说明
- EPSON ESC/POS指令
- 最大子列和问题
- [leetcode] 324. Wiggle Sort II 解题报告
- 在MAC上为ios交叉编译mono的AOT工具
- 用javascript实现元胞自动机的生命游戏
- Java基础知识练习之数字操作
- IntelliJ IDEA之项目热部署设置
- matlab struct 结构体
- PHP_$_SERVER中QUERY_STRING,REQUEST_URI的用法
- jsp获取JavaScript生成的中文cookie出现乱码问题解决方法
- (二)HTTP协议
- window7下VMware网络设置-固定ip
- [从头学数学] 第204节 不等式选讲