2008年4月14日 星期一

太神了!用JavaScript寫出超級瑪莉



一定沒人玩過用JavaScript寫的超級瑪莉吧!最近在Ajax板上面看到的一篇文章「Super Mario in 14kB Javascript」,作者把原本在任天堂上面的經典遊戲「超級瑪莉」轉移到電腦上面,而且還是用JavaScript寫出來的。我玩了幾次之後,發現反應時間不夠快的鍵盤,在操作遊戲的時候會非常不方便(像是我在用的A8J)。

大家一定很好奇這個遊戲是怎麼寫出來的吧,而且還有音樂咧。我看了一下程式碼,作者似乎是把音樂和人物用Base64和Base128編碼後,全部放在陣列裡面,如此一來程式碼就大幅縮短了,實在是太厲害啦!

我本來也想把這個遊戲直接嵌入在這篇文章裡面,可是我試了一個小時一直都不成功,似乎是在呼叫JavaScript的時候有一些undefined的問題,有看到這篇文章的強者,試試看能不能不要在onload的時候,直接呼叫遊戲出來,大家試試看吧。

後記:
我把文章po回去Ajax板之後,就有一些網友(LPH66和wctang)說明圖片和音樂是如何做出來的,音樂用的方法是data URL scheme,圖片則是用binary grid和ascii碼產生出來的,已經有一位叫做John Resig的網友解釋整個程式用的技術了,沒想到用JavaScript就可以做出這麼強大的功能,真的是讓我嘆為觀止呀!

參考資料:
nihilogic: Super Mario in 14kB Javascript
Base64 - Wikipedia
RFC 2397 - The "data" URL scheme
John Resig - Embedding and Encoding in JavaScript

沒有留言: