摘要:當前細胞為存活狀態時,當周圍有個以上的存活細胞時,該細胞變成死亡狀態。康威生命游戲的自由有了核心的算法游戲規則,康威生命就是一個具有生命的自由游戲。文件導出導入當然加了擴展功能,保存自己喜歡的細胞自動機成文件。
細胞自動機
備注:文末有自己用Javascript簡單實現的網頁版細胞自動機(還挺好玩)
什么是細胞自動機細胞自動機(英語:Cellular automaton),又稱格狀自動機、元胞自動機,它是由無限個有規律、堅硬的方格組成,每格均處于一種有限狀態。每格于t時的態由t-1時的一集有限格(這集叫那格的鄰域)的態決定。每一格的“鄰居”都是已被固定的。每次演進時,每格均遵從同一規矩一齊演進。
當然這個細胞自動機有一個游戲實現 ------康威生命游戲(英語:Conway"s Game of Life)
康威生命游戲規則生命游戲中,對于任意細胞,規則如下:
每個細胞有兩種狀態-存活或死亡,每個細胞與以自身為中心的周圍八格細胞產生互動。(如圖,黑色為存活,白色為死亡)
當前細胞為存活狀態時,當周圍低于2個(不包含2個)存活細胞時, 該細胞變成死亡狀態。(模擬生命數量稀少)
當前細胞為存活狀態時,當周圍有2個或3個存活細胞時, 該細胞保持原樣。
當前細胞為存活狀態時,當周圍有3個以上的存活細胞時,該細胞變成死亡狀態。(模擬生命數量過多)
當前細胞為死亡狀態時,當周圍有3個存活細胞時,該細胞變成存活狀態。 (模擬繁殖)
可以把最初的細胞結構定義為種子,當所有在種子中的細胞同時被以上規則處理后, 可以得到第一代細胞圖。按規則繼續處理當前的細胞圖,可以得到下一代的細胞圖,周而復始。
康威生命游戲的自由有了核心的算法(游戲規則),康威生命就是一個具有生命的自由游戲。你可以在游戲中創造出自己的細胞世界。周而復始。
自己實現的一個生命游戲生命游戲其實并不是很復雜,自己實現一個還是挺好玩的。所以自己就用Vue實現了一個小小的生命游戲
核心思想
下一步要做什么,生命游戲最重要就是下一步,不管游戲規則是如何,下一步狀態是這個游戲發展的動力。
function nextStep(map) { let newMap; //@TODO對newMap進行核心算法的編寫 return newMap; }
此函數就是游戲的生命,將游戲規則編寫進這個函數,Vue只負責渲染這個newMap就好了。
?
所以我們有以下函數
function nextStep(map) { let new_map = Array(52).fill(Array(52).fill(0)).map((i) => i.map((j) => 0)); let countAlive = 0; for (let i = 1; i < 51; i++) { for (let j = 1; j < 51; j++) { countAlive = map[i + 1][j] + map[i - 1][j] + map[i][j + 1] + map[i][j - 1] + map[i + 1][j + 1] + map[i + 1][j - 1] + map[i - 1][j + 1] + map[i - 1][j - 1]; if (map[i][j] === 0 && countAlive < 3) { new_map[i][j] = 0; } if (map[i][j] === 1 && 2 <= countAlive && countAlive <= 3) { new_map[i][j] = 1; } if (map[i][j] === 1 && (countAlive > 3 || countAlive < 2)) { new_map[i][j] = 0; } if (map[i][j] == 0 && countAlive === 3) { new_map[i][j] = 1; } countAlive = 0; } } return new_map; }
?
地圖擴展,我們的Map默認定了一個50*50的二位數組,可是考慮到邊界對細胞算法影響,我們擴展地圖,將地圖作為52*52的二位數組。這樣然這個50*50的二位數組最外面包多一層,看控制邊界對細胞算法影響。細胞只在內層50*50數組內繁衍。
?
let new_map = Array(52).fill(Array(52).fill(0)).map((i) => i.map((j) => 0));
?
文件導出導入 當然加了擴展功能,保存自己喜歡的細胞自動機成文件。
速度的調整 擴展功能,調整下一步的速度。
實現的效果 Gayhub源代碼,喜歡就給個Star戳=>>>>>>>>>>細胞自動機
最新版本的細胞自動機用了koa2進行了重構噢!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81375.html
摘要:生命游戲,數學家發明的一個游戲,又稱康威生命演化,生命棋,細胞自動機。康威有許多好玩有趣的發明,最廣為人知的一個是外觀數列,這里不多說,另一個就是生命游戲。生命游戲模擬的是二維平面上生命的演化過程。 生命游戲,數學家 John Conway 發明的一個游戲,又稱康威生命演化,生命棋,細胞自動機。 康威有許多好玩有趣的發明,最廣為人知的一個是外觀數列(Look-and-Say),這里不多...
摘要:生命游戲規則生命游戲中,對于任意細胞每個細胞有兩種狀態存活或死亡。每個細胞與以自身為中心的周圍八格細胞產生互動。繁衍函數死亡函數生存和死亡函數,由函數調用。 生命游...
摘要:地址是主要用到了來畫,實現很簡單,分享如下一個圓,中心點坐標,半徑給自己綁定一個點擊事件,刪除自己,創建四個新圓,中心點位置分別是當前半徑四種組合,半徑設為一半 地址是http://codepen.io/fishenal/full/EDxGL 主要用到了raphael.js來畫svg,實現很簡單,分享如下 var paper = Raphael(0, 0, 1000, 1000) ...
摘要:作者微信公眾號的皮卡丘歡迎大家搜索關注知乎機器學習美顏簡單品讀小說實現顏值預測預測比賽結果制作且版飛機大戰實現簡單的換臉術遺傳算法擬合圖像實現貓臉檢測分析個人音樂收藏垃圾郵件識別深度學習強化學習玩破解游戲實現簡單的機器翻譯模型學寫作實現文本 作者:Charles微信公眾號:Charles的皮卡丘(歡迎大家搜索關注)知乎:https://zhuanlan.zhihu.com/p/... ...
閱讀 1266·2021-11-24 09:39
閱讀 1517·2021-09-07 09:59
閱讀 3479·2019-08-30 15:54
閱讀 2474·2019-08-30 11:00
閱讀 2669·2019-08-29 15:06
閱讀 2160·2019-08-26 13:52
閱讀 427·2019-08-26 13:24
閱讀 2489·2019-08-26 12:20