生命遊戲,數學家john conway發明的乙個遊戲,又稱康威生命演化,生命棋,細胞自動機。
康威有許多好玩有趣的發明,最廣為人知的乙個是外觀數列(look-and-say),這裡不多說,另乙個就是生命遊戲(game-of-life)。
關於康威,摘錄一段wikipedia的敘述:
約翰·何頓·康威(john horton conway,2023年12月26日-),生於英國利物浦,數學家,活躍於有限群的研究、趣味數學、紐結理論、數論、組合博弈論和編碼學等範疇。生命遊戲模擬的是二維平面上生命的演化過程。康威年少時就對數學很有強烈的興趣:四歲時,其母發現他背誦二的次方;十一歲時,公升讀中學的面試,被問及他成長後想幹甚麼,他回答想在劍橋當數學家。後來康威果然於劍橋大學修讀數學,現時為普林斯頓大學的教授。
規則很簡單:每個細胞有兩種狀態--存活或死亡,每個細胞與以自身為中心的周圍八格細胞產生互動。
如果乙個活細胞周圍有2至3個活細胞,在下乙個階段繼續存活,否則死亡;
如果乙個死細胞周圍有3個活細胞,在下乙個階段將變成活細胞,否則繼續保持死亡
康威生命遊戲是簡單規則產生複雜變化的典型例子。在演變過程中,可以看到一些非常美妙的變化,和一些優美的幾何圖形。
下面是用html5 canvas實現的乙個簡單版本。
原始碼:demo:
js**如下:
function game()
game.prototype.init = function() , 120);
};game.prototype.eventhandler = function() else , 800);
canvas.style.display = 'inline';
snapshotimageelement.style.display = 'none';
snapshotbutton.innerhtml = 'snapshot';}};
};game.prototype.createrandomstones = function() , status))
}}};
game.prototype.draw = function()
});};game.prototype.getaroundstones = function() );
});};game.prototype.update = function() );
if (stone.status === true) else
} else
});this.stones.foreach(function(stone) );
}function stone(position, status)
stone.prototype.getaround = function() );
}}};
function canvas()
canvas.prototype.drawgrid = function(color, stepx, stepy)
for (var i = stepy + 0.5; i < ctx.canvas.height; i += stepy)
ctx.restore();
};canvas.prototype.drawstone = function(stone) ;
new game();
tips:
在google搜尋conway's game of life
,會看到google的乙個實現。
原文:
康威生命遊戲
規則生命遊戲中,對於任意細胞,規則如下 每個細胞有兩種狀態 存活或死亡,每個細胞與以自身為中心的周圍八格細胞產生互動 如圖,黑色為存活,白色為死亡 當前細胞為存活狀態時,當周圍的存活細胞低於2個時 不包含2個 該細胞變成死亡狀態。模擬生命數量稀少 當前細胞為存活狀態時,當周圍有2個或3個存活細胞時,...
生命遊戲簡單canvas實現
最近了解到乙個好玩的東西,叫生命遊戲,是英國數學家約翰 康威在 1970 年代所發明的一種元胞自動機 按照以下三條規則進行演化 活細胞周圍的細胞數小於 2 個或多於 3 個則死亡 活細胞周圍有 2 或 3 個細胞可以繼續存活 死細胞周圍恰好有 3 個細胞則會復活 用 j ascript 語言描述這一...
Python 生命遊戲的實現
給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態 1 即為活細胞 live 或 0 即為死細胞 dead 每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞...