https://github.com/ambar/snake
Snake Game
https://github.com/ambar/snake
Last synced: about 1 month ago
JSON representation
Snake Game
- Host: GitHub
- URL: https://github.com/ambar/snake
- Owner: ambar
- Created: 2011-10-10T05:27:23.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-02-23T11:22:29.000Z (over 1 year ago)
- Last Synced: 2025-04-17T20:40:27.765Z (about 2 months ago)
- Language: JavaScript
- Homepage: https://snake.ambar.li/
- Size: 31.3 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
第二个动画游戏。
# 贪吃蛇
[Demo](http://ambar.github.com/Snake)
## 起源
* [http://zh.wikipedia.org/wiki/贪食蛇](http://zh.wikipedia.org/wiki/%E8%B4%AA%E9%A3%9F%E8%9B%87)
* [http://en.wikipedia.org/wiki/Snake_(video_game)](http://en.wikipedia.org/wiki/Snake_(video_game)## 所得
* 增加辅助类:颜色
* 增加辅助类:向量### 帧率和速度定义
我猜,有三种选择:
1. 舞台降低帧率,蛇行进速度为网格单位长度 。
2. 舞台正常帧率,蛇行进速度为网格单位长度,但蛇更新状态时使用较低的局部帧率。
3. 帧率全部不变,使用无数个 Deferred/Promise, 此异步任务确保蛇行进了单位长度才能改向。很明显,按描述字数长度就可知,选择一实现最简单,选择三最复杂。
选择二和三适用于其他游戏中内嵌一个贪吃蛇游戏。### 如何移动
这个游戏选择第一种做法。然后移动规则的实现就很明了——蛇所有部位的位置信息为保存为一个向量列表,每个移动时,pop 末尾,头部加上移动向量 unshift 进位置列表,这就完成一次移动 。
## 使用
```
// 网格单位长度, 默认 40
// SnakeGame.unit = 60;// 显示调试用网格, 默认 false
// SnakeGame.debug = true;// 设定穿墙, 默认 true
// SnakeGame.penetrable = false;// canvas,宽,高,缩放
SnakeGame.init('#snake-game',720,480,1);
// SnakeGame.init('#snake-game',480,320,2);
```