1. 程式人生 > >HTML5版本的生命遊戲

HTML5版本的生命遊戲

關於複雜自適應系統的一切曾經是學生時代的最愛,其中一個很有代表性的原型就是這種叫做“生命遊戲”的元胞自動機。後來由於種種原因,並沒有把這個興趣深入延續下去。最近在看一本關於HTML5的書,讀到關於canvas的一章,突然有點手癢,花了一個下午的時間,用Javascript寫了一個簡單的生命遊戲。

記得在學校的時候,也用ASP和Javascript來寫過一個:ASP用來動態生成table,Javascript用來控制其中的td的背景色,在IE4上執行。相比現在的HTML5,那實在是一種繁瑣和簡陋的嘗試。當時,由於對這些簡單的數學程式背後隱藏的複雜世界的著迷,還用VB6開發過一些可以在網頁上執行的ActiveX控制元件,可以通過調整方程的引數生成一些分形圖畫。其中一部分控制元件用的是當時微軟大力鼓吹的ActiveDocument技術(即OLE的Web翻版),現在已經沒有多少人記得了。如今,HTML5終於橫空出世,並迅速普及,那麼再過10年,是否還會有人記得現在的Flash、Sliverlight和Ajax呢?

在近期的展會上,基於HTML5的PACS/RIS已經橫空出世。在iPad上達到醫用質量的影象顯示,至少軟體層面的障礙已經清除。也許某一天,HTML5 API真的可以成為一個新的,更有生命力的行業標準,以及一個一統Web前端應用領域的開發平臺。而在此過程中蘊藏的種種機會,正等待著大家去挖掘。

下面是生命遊戲的完整原始碼,感興趣的朋友可以複製貼上到本地一個html檔案中,用IE9以上版本開啟。我在自己的機器(Intel i3 M350)上發現用IE9執行時確實比較慢,每一代之間都有明顯的短暫停頓,CPU佔用率在25%以上。但完全相同的程式碼,在Opera10上執行就快得多,幾乎感覺不到停頓,CPU佔用率在25%以下。我在網上看到

國外某大學學生的作品,在IE9上跑速度比我的快很多,估計做了一些演算法上的優化。據說IE10對Javascript引擎做了很大的效能提升,我原本不是個熱衷於升級軟體的人,但現在卻莫名地衝動。

下面是程式在Opera10上執行的截圖,細心的讀者會發現,在暫停狀態下還可以用滑鼠來種植新細胞,您可以動手創造一些有著有趣演化規律的細胞群。