成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

【簡(jiǎn)單好玩】細(xì)胞自動(dòng)機(jī)小游戲

yagami / 3441人閱讀

摘要:當(dāng)前細(xì)胞為存活狀態(tài)時(shí),當(dāng)周?chē)袀€(gè)以上的存活細(xì)胞時(shí),該細(xì)胞變成死亡狀態(tài)??低螒虻淖杂捎辛撕诵牡乃惴ㄓ螒蛞?guī)則,康威生命就是一個(gè)具有生命的自由游戲。文件導(dǎo)出導(dǎo)入當(dāng)然加了擴(kuò)展功能,保存自己喜歡的細(xì)胞自動(dòng)機(jī)成文件。

細(xì)胞自動(dòng)機(jī)

備注:文末有自己用Javascript簡(jiǎn)單實(shí)現(xiàn)的網(wǎng)頁(yè)版細(xì)胞自動(dòng)機(jī)(還挺好玩)

什么是細(xì)胞自動(dòng)機(jī)

細(xì)胞自動(dòng)機(jī)(英語(yǔ):Cellular automaton),又稱格狀自動(dòng)機(jī)、元胞自動(dòng)機(jī),它是由無(wú)限個(gè)有規(guī)律、堅(jiān)硬的方格組成,每格均處于一種有限狀態(tài)。每格于t時(shí)的態(tài)由t-1時(shí)的一集有限格(這集叫那格的鄰域)的態(tài)決定。每一格的“鄰居”都是已被固定的。每次演進(jìn)時(shí),每格均遵從同一規(guī)矩一齊演進(jìn)。

當(dāng)然這個(gè)細(xì)胞自動(dòng)機(jī)有一個(gè)游戲?qū)崿F(xiàn) ------康威生命游戲(英語(yǔ):Conway"s Game of Life)

康威生命游戲規(guī)則

生命游戲中,對(duì)于任意細(xì)胞,規(guī)則如下:
每個(gè)細(xì)胞有兩種狀態(tài)-存活或死亡,每個(gè)細(xì)胞與以自身為中心的周?chē)?strong>八格細(xì)胞產(chǎn)生互動(dòng)。(如圖,黑色為存活,白色為死亡)

當(dāng)前細(xì)胞為存活狀態(tài)時(shí),當(dāng)周?chē)陀?個(gè)(不包含2個(gè))存活細(xì)胞時(shí), 該細(xì)胞變成死亡狀態(tài)。(模擬生命數(shù)量稀少)

當(dāng)前細(xì)胞為存活狀態(tài)時(shí),當(dāng)周?chē)?個(gè)或3個(gè)存活細(xì)胞時(shí), 該細(xì)胞保持原樣。

當(dāng)前細(xì)胞為存活狀態(tài)時(shí),當(dāng)周?chē)?個(gè)以上的存活細(xì)胞時(shí),該細(xì)胞變成死亡狀態(tài)。(模擬生命數(shù)量過(guò)多)

當(dāng)前細(xì)胞為死亡狀態(tài)時(shí),當(dāng)周?chē)?個(gè)存活細(xì)胞時(shí),該細(xì)胞變成存活狀態(tài)。 (模擬繁殖)

可以把最初的細(xì)胞結(jié)構(gòu)定義為種子,當(dāng)所有在種子中的細(xì)胞同時(shí)被以上規(guī)則處理后, 可以得到第一代細(xì)胞圖。按規(guī)則繼續(xù)處理當(dāng)前的細(xì)胞圖,可以得到下一代的細(xì)胞圖,周而復(fù)始。

康威生命游戲的自由

有了核心的算法(游戲規(guī)則),康威生命就是一個(gè)具有生命的自由游戲。你可以在游戲中創(chuàng)造出自己的細(xì)胞世界。周而復(fù)始。

自己實(shí)現(xiàn)的一個(gè)生命游戲

生命游戲其實(shí)并不是很復(fù)雜,自己實(shí)現(xiàn)一個(gè)還是挺好玩的。所以自己就用Vue實(shí)現(xiàn)了一個(gè)小小的生命游戲

核心思想

下一步要做什么,生命游戲最重要就是下一步,不管游戲規(guī)則是如何,下一步狀態(tài)是這個(gè)游戲發(fā)展的動(dòng)力。

function nextStep(map) {
let newMap;
    //@TODO對(duì)newMap進(jìn)行核心算法的編寫(xiě)
return newMap;
}

此函數(shù)就是游戲的生命,將游戲規(guī)則編寫(xiě)進(jìn)這個(gè)函數(shù),Vue只負(fù)責(zé)渲染這個(gè)newMap就好了。

?

所以我們有以下函數(shù)

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;
        }

?

地圖擴(kuò)展,我們的Map默認(rèn)定了一個(gè)50*50的二位數(shù)組,可是考慮到邊界對(duì)細(xì)胞算法影響,我們擴(kuò)展地圖,將地圖作為52*52的二位數(shù)組。這樣然這個(gè)50*50的二位數(shù)組最外面包多一層,看控制邊界對(duì)細(xì)胞算法影響。細(xì)胞只在內(nèi)層50*50數(shù)組內(nèi)繁衍。

?

let new_map = Array(52).fill(Array(52).fill(0)).map((i) => i.map((j) => 0));

?

文件導(dǎo)出導(dǎo)入 當(dāng)然加了擴(kuò)展功能,保存自己喜歡的細(xì)胞自動(dòng)機(jī)成文件。

速度的調(diào)整 擴(kuò)展功能,調(diào)整下一步的速度。

實(shí)現(xiàn)的效果

Gayhub源代碼,喜歡就給個(gè)Star

戳=>>>>>>>>>>細(xì)胞自動(dòng)機(jī)

這是一個(gè)分割線!

最新版本的細(xì)胞自動(dòng)機(jī)用了koa2進(jìn)行了重構(gòu)噢!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81375.html

相關(guān)文章

  • 康威生命游戲簡(jiǎn)單實(shí)現(xiàn)

    摘要:生命游戲,數(shù)學(xué)家發(fā)明的一個(gè)游戲,又稱康威生命演化,生命棋,細(xì)胞自動(dòng)機(jī)??低性S多好玩有趣的發(fā)明,最廣為人知的一個(gè)是外觀數(shù)列,這里不多說(shuō),另一個(gè)就是生命游戲。生命游戲模擬的是二維平面上生命的演化過(guò)程。 生命游戲,數(shù)學(xué)家 John Conway 發(fā)明的一個(gè)游戲,又稱康威生命演化,生命棋,細(xì)胞自動(dòng)機(jī)。 康威有許多好玩有趣的發(fā)明,最廣為人知的一個(gè)是外觀數(shù)列(Look-and-Say),這里不多...

    ccj659 評(píng)論0 收藏0
  • C++Qt開(kāi)發(fā)-單線程實(shí)現(xiàn)生命游戲

    摘要:生命游戲規(guī)則生命游戲中,對(duì)于任意細(xì)胞每個(gè)細(xì)胞有兩種狀態(tài)存活或死亡。每個(gè)細(xì)胞與以自身為中心的周?chē)烁窦?xì)胞產(chǎn)生互動(dòng)。繁衍函數(shù)死亡函數(shù)生存和死亡函數(shù),由函數(shù)調(diào)用。 生命游...

    szysky 評(píng)論0 收藏0
  • 一個(gè)簡(jiǎn)單細(xì)胞分裂游戲

    摘要:地址是主要用到了來(lái)畫(huà),實(shí)現(xiàn)很簡(jiǎn)單,分享如下一個(gè)圓,中心點(diǎn)坐標(biāo),半徑給自己綁定一個(gè)點(diǎn)擊事件,刪除自己,創(chuàng)建四個(gè)新圓,中心點(diǎn)位置分別是當(dāng)前半徑四種組合,半徑設(shè)為一半 地址是http://codepen.io/fishenal/full/EDxGL 主要用到了raphael.js來(lái)畫(huà)svg,實(shí)現(xiàn)很簡(jiǎn)單,分享如下 var paper = Raphael(0, 0, 1000, 1000) ...

    Pink 評(píng)論0 收藏0
  • python機(jī)器/深度學(xué)習(xí)項(xiàng)目匯總

    摘要:作者微信公眾號(hào)的皮卡丘歡迎大家搜索關(guān)注知乎機(jī)器學(xué)習(xí)美顏簡(jiǎn)單品讀小說(shuō)實(shí)現(xiàn)顏值預(yù)測(cè)預(yù)測(cè)比賽結(jié)果制作且版飛機(jī)大戰(zhàn)實(shí)現(xiàn)簡(jiǎn)單的換臉術(shù)遺傳算法擬合圖像實(shí)現(xiàn)貓臉檢測(cè)分析個(gè)人音樂(lè)收藏垃圾郵件識(shí)別深度學(xué)習(xí)強(qiáng)化學(xué)習(xí)玩破解游戲?qū)崿F(xiàn)簡(jiǎn)單的機(jī)器翻譯模型學(xué)寫(xiě)作實(shí)現(xiàn)文本 作者:Charles微信公眾號(hào):Charles的皮卡丘(歡迎大家搜索關(guān)注)知乎:https://zhuanlan.zhihu.com/p/... ...

    toddmark 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<