36
本文作者: 張馳 | 2015-12-27 19:19 |
圖片來自wiki
生命游戲(Game of Life)是英國數(shù)學(xué)家約翰·何頓·康威在1970年發(fā)明的細(xì)胞自動機(jī),它也是一款“零玩家”游戲,即游戲的演化完全由初始狀態(tài)決定,不需要后續(xù)信息輸入。
生命游戲在形式上一般是由方格組成的二維矩形,每個方格中有一個細(xì)胞,而細(xì)胞在下一刻的狀態(tài)由周圍八個方格中細(xì)胞的狀態(tài)來決定。周圍活著的細(xì)胞太多或太少,方格中的細(xì)胞都會因為資源缺乏或太寂寞而死掉,就像現(xiàn)實中的生命一樣。玩家可以給個初始值后,靜靜地看著矩形中的生命誕生或消亡,期間還會出現(xiàn)一些有趣的幾何圖案,是個打發(fā)時間的不二選擇。
圖片來自wiki
生命游戲可以在電腦上用多種語言實現(xiàn)了,這里就有一個Python的例子。不過在上周硬創(chuàng)邦的創(chuàng)客馬拉松上,有一支團(tuán)隊想把這個經(jīng)典游戲和零件柜結(jié)合起來。
Atommann參加過多次創(chuàng)馬了,在哈工大站和朋友一起做了個海龜機(jī)器人,捧走了第一名。這次他又聚集了幾個朋友,想做個12 X 12的方形零件柜,裝電阻電容一類的小器件;然后在每個小盒中放入LED燈,把二維矩形具現(xiàn)化,用于演示生命游戲,這樣還能讓它變身一件藝術(shù)器。
作品思路不復(fù)雜,那最終效果如何呢?小編還是直接劇透吧。
其實這次創(chuàng)馬Atommann他們沒能在最終展示前完成作品,也沒能拿到名次。他告訴硬創(chuàng)邦,其實技術(shù)上難度不大,比上次的海龜機(jī)器人還要小一些,“主要是這次的重復(fù)工作(如焊接)太多,導(dǎo)致沒有足夠的時間寫代碼”。所有的LED都可以亮的,但生命游戲還是無法演示。
一件意料外的事是,程序員跑了,準(zhǔn)確地說是,程序員有重要的事必須離開。而編程又不是Atommann擅長的領(lǐng)域,所以沒能趕上。他“本想換一個方案,但又想挑戰(zhàn)自己,看能不能在限定的時間內(nèi)把東西焊好”,也是糾結(jié),但東西焊好了,也沒多少時間寫代碼了??磥泶a農(nóng)真的很重要,請善待他們。
雖然有點遺憾,但Atommann還是在創(chuàng)馬結(jié)束后完成了這個項目,效果見這里。
最開始見到這個項目的時候,小編想到了另一個視頻。內(nèi)容是國外黑客入侵了一座大樓的電力系統(tǒng),然后開關(guān)各房間的燈來玩坦克大戰(zhàn)。視頻如下:
所以小編問Atommann是不是可以用零件柜玩俄羅斯方塊這樣的游戲(坦克大戰(zhàn)的話,12 X 12估計不夠),他說這肯定要實現(xiàn)的,最近還在抽時間繼續(xù)完成這個項目。
關(guān)于為什么會想到做生命游戲,Atommann講得也很有趣,以至于小編想偷懶原原本本呈現(xiàn):
大概在 2000 年左右,我上中專的時候在書店買到兩本書,書名是 《數(shù)學(xué)游戲》(上下),是《科學(xué)美國人》的《數(shù)學(xué)游戲》專欄上一些文章的集結(jié)本,我?guī)啄昵皩戇^一個書評,見“能帶給人思考和娛樂的數(shù)學(xué)書”。
書里有很多數(shù)學(xué)娛樂和編程問題,當(dāng)時學(xué)校也教編程,主要是BASIC語言,于是我就在上機(jī)的時候嘗試書里的例子,發(fā)現(xiàn)這些程序非常有趣。為了節(jié)省上機(jī)的時間和費用,我在去學(xué)校機(jī)房上機(jī)前,一般先到公園里把程序?qū)懺诩埳?,到了上機(jī)時間再把程序錄入電腦進(jìn)行調(diào)試。
其中我最感興趣的程序就是生命游戲,細(xì)胞自動機(jī)程序和一些分形程序。2001年畢業(yè)工作后我都還在玩這些程序。
程序生成的圖形之一
現(xiàn)在還很懷念以前那些在電腦上改參數(shù)生成不同的圖形的日子 :)
程序生成的蟲子圖
《數(shù)學(xué)游戲》中文版中,每篇文章都沒有寫出作者的名字。這不方便讓人搜索文章來源。直到后來,我才明白,有些文章是數(shù)學(xué)娛樂大師 Martin Gardner 寫的;有些文章是奇書《哥德爾、埃舍爾、巴赫:集異璧之大成》的作者 Douglas Hofstadter 寫的;還有一些文章是加拿大數(shù)學(xué)家 Alexander Dewdney 寫的。后來我還托人從美國買了 Dewdney 的三本書。
我中專專業(yè)是機(jī)械制造,后來通過自學(xué)進(jìn)入了電子行業(yè)。我也非常喜歡 DIY和相應(yīng)的文化,很多東西都想自己親自動手做一遍。在電子制作過程中,發(fā)現(xiàn)浪費很多時間在找零件上。而且電子零件的種類十分繁多,比如 5% 精度的電阻就有 168 種之多。如果在做一個東西的時候,發(fā)現(xiàn)手上少了一個零件,比如電阻,然后到處翻箱倒柜去找,這是讓人無法忍受的。因此,在2012年就萌生了做零件柜的想法。我們當(dāng)時討論了很多有趣的方案,其中一個就是把 LED 燈條加到現(xiàn)有的零件柜上,用語音識別,定位所需要的零件。
應(yīng)該是在今年,我想到這個項目還沒有完成,突然想到可以在零件柜的每個格子里安裝一個LED,這樣就可以把零件柜做成一個藝術(shù)裝置,把康威的生命游戲也集成進(jìn)去。想法就這樣產(chǎn)生了,只是把不同的東西組合在一起,就是一個新的作品。
看到這段經(jīng)歷,小編只想說:3年前的想法現(xiàn)在才做,這坑填得夠慢呀!
Atommann也表示,“如果不報名參加創(chuàng)客馬拉松,這個能運行生命游戲的,漂亮的,獨一無二的零件柜還是停留在我們的腦海里,而不是擺在SZDIY里?!?/span>
所以,有什么想法就來參加硬創(chuàng)邦的創(chuàng)客馬拉松吧(此處為硬廣)!
關(guān)注硬創(chuàng)邦微信號(leiphone_bang),加入全球創(chuàng)客馬拉松主群(群號:259592983),參與我們的互動討論,獲得最新比賽信息~
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。