作者kewang (對呀對呀對呀對呀)
看板Ajax
標題Re: [url] Super Mario in 14kB Javascript
時間Wed Apr 16 10:55:59 2008
※ 引述《qrtt1 (null)》之銘言:
: http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html
: <%
: Here's an experiment in keeping things small and confined to one Javascript
: file. There are no external image files or anything, everything is rendered
: with Javascript using either canvas elements or old fashioned div-making
: tactics (for IE). The sprites are stored in custom encoded strings in a
: format that only allows 4 colors for each sprite but in turn only takes up
: around 40-60 bytes per sprite.
: %>
圖文版
http://blog.pixnet.net/kewang/post/16604843
一定沒人玩過用JavaScript寫的超級瑪莉吧!最近在Ajax板上面看到的一篇文章「Super
Mario in 14kB Javascript」,作者把原本在任天堂上面的經典遊戲「超級瑪莉」轉移到
電腦上面,而且還是用JavaScript寫出來的。我玩了幾次之後,發現反應時間不夠快的鍵
盤,在操作遊戲的時候會非常不方便(像是我在用的A8J)。
大家一定很好奇這個遊戲是怎麼寫出來的吧,而且還有音樂咧。我看了一下程式碼,作者
似乎是把音樂和人物用Base64和Base128編碼後,全部放在陣列裡面,如此一來程式碼就
大幅縮短了,實在是太厲害啦!
我本來也想把這個遊戲直接嵌入在這篇文章裡面,可是我試了一個小時一直都不成功,似
乎是在呼叫JavaScript的時候有一些undefined的問題,有看到這篇文章的強者,試試看
能不能不要在onload的時候,直接呼叫遊戲出來,大家試試看吧。
參考資料:
nihilogic: Super Mario in 14kB Javascript
Base64 - Wikipedia
--
雜七雜八的kewang部落格
http://kewang.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.111.79.30
1F:→ kewang:主要是想問有沒有人能在不onload的時候直接執行遊戲 04/16 11:20
2F:推 qrtt1:唔, Base64應該會使資料變大才對 haha 04/16 11:42
3F:→ kewang:可是我在src看到的似乎就是這樣子耶 用base64跟base128來做 04/16 11:42
4F:→ kewang:可能還有一些我沒注意到的地方吧 04/16 11:57
5F:推 LPH66:那是data: URI scheme 用data:開頭的字串把圖/midi包在html 04/16 12:17
8F:→ bcse:它是用 base64,但這不是程式碼大幅縮短的原因 04/21 02:21
9F:推 LouisXIV:bcse 可否多給點解釋呢? 小弟願聞其詳! 謝謝 04/21 22:36
10F:推 LPH66:他有做一個簡單的javascript壓縮 把35K的程式縮到14K 04/22 03:11