先上源碼,版本是ES6 13行常規(700bytes) shortest snake game.html 壓縮後的500bytes(當然兩處document還是可以用eval壓縮的) index.500bytes.html 之前很火的20行代碼地址(有BUG)(900bytes) hj7jay/ar ...
先上源碼,版本是ES6
13行常規(700bytes) |
|
壓縮後的463bytes(當然還是可以用eval壓縮的) |
|
之前很火的20行代碼地址(有BUG)(900bytes) |
一維數組700char
(0,0)位置的蛇身用0表示,(0,1)用1,(1,0)用10表示,以此類推;蛇頭放數組的"左邊",蛇尾放數組"右邊"
因為就13行js,
第4行 是聲明
第5行 比較難理解,可以把?:運算符,拆分為4行if語句;可以參考下麵的 二維數組 的版本
第9行 0|x 和 ~~x 和 x>>0 都能去除x(number)的尾數
應該算易讀了
|
顏色效果
|
說明
如果自己要寫的話:要註意兩點
- 蛇尾應該比蛇頭先消失,蛇頭應該比食物先生成,
-
蛇不能走當前相反的方向
可以用長度為4的蛇進行測試
代碼風格
-
省去沒必要的標簽
https://google.github.io/styleguide/htmlcssguide.html#Optional_Tags
- if() return只用一行
-
除了鍵盤響應那裡用3目運算符能省3行之外,其他地方都沒必要用
二維數組
以上的都是用一維數組實現的,下麵的用二維數組寫;要簡化也能簡化到17行以內900char以內(比20行的那個短就是了),不過沒有必要
帶註釋的1100char
|
七彩的(主要是比較好看)1100char