康威生命遊戲的簡單實現

2021-06-28 01:37:11 字數 1771 閱讀 2786

生命遊戲,數學家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 每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞...