【新春创造营】马年贪吃蛇

:snake: 马儿贪吃蛇 - Horse Snake

经典贪吃蛇游戏的马年主题版本!控制可爱的小马:horse_face:吃苹果:red_apple:,越吃越长!

:video_game: 怎么玩

操作方式

  • 电脑端:方向键 :up_arrow::down_arrow::left_arrow::right_arrow: 或 WASD 键
  • 手机端:点击虚拟方向键,或在屏幕上滑动

游戏规则

  • :red_apple: 吃苹果得分(+10分)
  • :warning: 撞墙或撞到自己就输了
  • :rocket: 吃得越多速度越快

:sparkles: 特色功能

  • :mobile_phone: 全平台支持 - 电脑、手机都能玩
  • :bullseye: 多种操作 - 键盘、触摸、虚拟按键
  • :floppy_disk: 记录最高分 - 自动保存你的最好成绩
  • :artist_palette: 自适应屏幕 - 自动调整大小适配你的设备

:rocket: 开始游戏

  1. 用浏览器打开 index.html
  2. 点击"开始游戏"
  3. 开始玩!

无需安装,直接就能玩!

:hammer_and_wrench: 技术说明

使用的技术

  • HTML5 Canvas - 游戏画面
  • JavaScript - 游戏逻辑
  • CSS3 - 界面样式

核心功能实现

1. 响应式设计

// 自动计算Canvas大小,适配不同屏幕
const maxSize = Math.min(availableWidth, availableHeight, 450);
this.canvas.width = maxSize;
this.canvas.height = maxSize;

2. 碰撞检测

// 检查撞墙
if (head.x < 0 || head.x >= this.tileCount) {
    this.gameOver();
}

// 检查撞自己
if (this.snake.some(segment => segment.x === head.x)) {
    this.gameOver();
}

// 检查吃到食物
if (head.x === this.food.x && head.y === this.food.y) {
    this.score += 10;
}

3. 移动端触摸控制

// 识别滑动方向
const deltaX = touch.clientX - this.touchStartX;
const deltaY = touch.clientY - this.touchStartY;

if (Math.abs(deltaX) > Math.abs(deltaY)) {
    // 水平滑动
} else {
    // 垂直滑动
}

4. 渐进加速

// 每吃5个食物加速
if (this.snake.length % 5 === 0 && this.speed > 80) {
    this.speed -= 10;
}

数据结构

// 蛇的身体(数组)
snake: [
    { x: 10, y: 10 },  // 头
    { x: 9, y: 10 },   // 身体
    { x: 8, y: 10 }    // 尾
]

// 食物位置
food: { x: 15, y: 12 }

// 移动方向
dx: 1,  // 水平(-1左, 0不动, 1右)
dy: 0   // 垂直(-1上, 0不动, 1下)

:memo: 开发笔记

解决的问题

问题1:快速按键导致反向移动

  • 解决:使用方向缓冲,下一帧才改变方向

问题2:不同屏幕显示不一致

  • 解决:动态计算Canvas大小

问题3:触摸控制不准确

  • 解决:比较水平和垂直滑动距离

:glowing_star: 项目亮点

  • :white_check_mark: 纯原生JavaScript,无需框架
  • :white_check_mark: 单文件设计,代码简洁
  • :white_check_mark: 完美适配移动端
  • :white_check_mark: 流畅的游戏体验

## 🔧 浏览器支持

- Chrome / Edge / Firefox / Safari
- 手机浏览器(iOS / Android)

---

预览地址: https://snake-div.pages.dev/

速度好快!可以调一下吗hhhh 操作来不及啊

升级了 分模式了 你可以玩玩嘻嘻 :face_blowing_a_kiss:

1 个赞

@10008873411 官方大人 康康我 :heart_eyes: