看板 Ajax 關於我們 聯絡資訊
※ 引述《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
kewang:主要是想問有沒有人能在不onload的時候直接執行遊戲 04/16 11:20
qrtt1:唔, Base64應該會使資料變大才對 haha 04/16 11:42
kewang:可是我在src看到的似乎就是這樣子耶 用base64跟base128來做 04/16 11:42
kewang:可能還有一些我沒注意到的地方吧 04/16 11:57
LPH66:那是data: URI scheme 用data:開頭的字串把圖/midi包在html 04/16 12:17
LPH66:之中 詳見rfc2397:http://tools.ietf.org/html/rfc2397 04/16 12:18
wctang:midi是base64,圖片是binary和ascii http://0rz.tw/233TM 04/16 21:27
bcse:它是用 base64,但這不是程式碼大幅縮短的原因 04/21 02:21
LouisXIV:bcse 可否多給點解釋呢? 小弟願聞其詳! 謝謝 04/21 22:36
LPH66:他有做一個簡單的javascript壓縮 把35K的程式縮到14K 04/22 03:11