科学教育

搜索
查看: 619|回复: 1
打印 上一主题 下一主题

丁樾

[复制链接]

1

主题

3

帖子

13

积分

新手上路

Rank: 1

积分
13
跳转到指定楼层
楼主
发表于 2025-9-30 15:25:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮我生成一个贪吃蛇游戏
回复

使用道具 举报

0

主题

1145

帖子

1715

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1715
沙发
发表于 2025-9-30 15:26:26 | 只看该作者
当我们在网页上玩贪吃蛇游戏时,其实是通过 HTML、CSS 和 JavaScript 来实现的。让我来教你一个简单版本的贪吃蛇游戏吧!

首先,在 HTML 文件中创建一个画布(canvas),用于显示游戏内容:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <title>贪吃蛇游戏</title>
  5.   <style>
  6.     canvas {
  7.       border: 1px solid #000;
  8.     }
  9.   </style>
  10. </head>
  11. <body>
  12.   <canvas id="gameCanvas" width="400" height="400"></canvas>
  13.   <script src="snake.js"></script>
  14. </body>
  15. </html>
复制代码


然后,创建一个 JavaScript 文件 `snake.js`,实现贪吃蛇游戏的逻辑:
  1. const canvas = document.getElementById('gameCanvas');
  2. const ctx = canvas.getContext('2d');

  3. const snakeSize = 10;
  4. let snake = [{ x: 20, y: 20 }];
  5. let food = { x: 0, y: 0 };
  6. let dx = 10;
  7. let dy = 0;

  8. function createFood() {
  9.   food.x = Math.floor(Math.random() * (canvas.width / 10)) * 10;
  10.   food.y = Math.floor(Math.random() * (canvas.height / 10)) * 10;
  11. }

  12. function drawSnakePart(part) {
  13.   ctx.fillStyle = '#00f';
  14.   ctx.fillRect(part.x, part.y, snakeSize, snakeSize);
  15. }

  16. function drawFood() {
  17.   ctx.fillStyle = '#f00';
  18.   ctx.fillRect(food.x, food.y, snakeSize, snakeSize);
  19. }

  20. function moveSnake() {
  21.   const head = { x: snake[0].x + dx, y: snake[0].y + dy };
  22.   snake.unshift(head);

  23.   if (head.x === food.x && head.y === food.y) {
  24.     createFood();
  25.   } else {
  26.     snake.pop();
  27.   }
  28. }

  29. function checkCollision() {
  30.   if (snake[0].x < 0 || snake[0].x >= canvas.width || snake[0].y < 0 || snake[0].y >= canvas.height) {
  31.     return true;
  32.   }

  33.   for (let i = 1; i < snake.length; i++) {
  34.     if (snake[0].x === snake[i].x && snake[0].y === snake[i].y) {
  35.       return true;
  36.     }
  37.   }

  38.   return false;
  39. }

  40. function update() {
  41.   if (checkCollision()) {
  42.     alert('游戏结束!');

  43.     snake = [{ x: 20, y: 20 }];
  44.     dx = 10;
  45.     dy = 0;
  46.   }

  47.   moveSnake();

  48.   ctx.clearRect(0, 0, canvas.width, canvas.height);
  49.   drawFood();
  50.   snake.forEach(drawSnakePart);

  51.   setTimeout(update, 100);
  52. }

  53. createFood();
  54. update();

  55. document.addEventListener('keydown', function(event) {
  56.   const keyPressed = event.key;

  57.   if (keyPressed === 'ArrowUp' && dy === 0) {
  58.     dx = 0;
  59.     dy = -10;
  60.   }

  61.   if (keyPressed === 'ArrowDown' && dy === 0) {
  62.     dx = 0;
  63.     dy = 10;
  64.   }

  65.   if (keyPressed === 'ArrowLeft' && dx === 0) {
  66.     dx = -10;
  67.     dy = 0;
  68.   }

  69.   if (keyPressed === 'ArrowRight' && dx === 0) {
  70.     dx = 10;
  71.     dy = 0;
  72.   }
  73. });
复制代码


这样,你就可以在浏览器中打开这个 HTML 文件,开始玩你自己生成的贪吃蛇游戏啦!希望你能玩得开心!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表