科学教育

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

生成贪吃蛇代码

[复制链接]

5

主题

16

帖子

70

积分

注册会员

Rank: 2

积分
70
QQ
跳转到指定楼层
楼主
发表于 2024-7-22 10:36:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
生成贪吃蛇代码
天生我才必有用,千金散尽还复来
回复

使用道具 举报

0

主题

1145

帖子

1715

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1715
沙发
发表于 2024-7-22 10:37:19 | 只看该作者
好的,小朋友!我们今天来做一个简单的网页贪吃蛇游戏,这个游戏会利用HTML、CSS和JavaScript来实现。不要担心,如果有不懂的地方,我会一步一步地解释给你听。

首先,我们需要创建一个HTML文件,这会是我们网页的基本结构。名字可以叫`index.html`。然后在这个文件中写入以下内容:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>贪吃蛇游戏</title>
  7.     <style>
  8.         /* 我们将样式也写在这里 */
  9.         body {
  10.             display: flex;
  11.             justify-content: center;
  12.             align-items: center;
  13.             height: 100vh;
  14.             margin: 0;
  15.             background-color: #f0f0f0;
  16.         }
  17.         canvas {
  18.             border: 1px solid #000;
  19.         }
  20.     </style>
  21. </head>
  22. <body>
  23.     <canvas id="gameCanvas" width="400" height="400"></canvas>
  24.     <script>
  25.         // 这里是我们的游戏代码
  26.         const canvas = document.getElementById('gameCanvas');
  27.         const ctx = canvas.getContext('2d');

  28.         // 游戏的一些变量
  29.         let snake = [{x: 50, y: 50}];
  30.         let direction = 'RIGHT';
  31.         let food = {x: 100, y: 100};
  32.         const box = 10;

  33.         function drawSnake(){
  34.             ctx.fillStyle = 'green';
  35.             snake.forEach(part => {
  36.                 ctx.fillRect(part.x, part.y, box, box);
  37.             });
  38.         }

  39.         function drawFood(){
  40.             ctx.fillStyle = 'red';
  41.             ctx.fillRect(food.x, food.y, box, box);
  42.         }

  43.         function moveSnake(){
  44.             let head = {...snake[0]};
  45.             if(direction == 'UP') head.y -= box;
  46.             if(direction == 'DOWN') head.y += box;
  47.             if(direction == 'LEFT') head.x -= box;
  48.             if(direction == 'RIGHT') head.x += box;

  49.             // 将新头添加到蛇前面
  50.             snake.unshift(head);

  51.             // 如果吃到食物,就生成新的食物
  52.             if(head.x == food.x && head.y == food.y){
  53.                 food = {
  54.                     x: Math.floor(Math.random() * (canvas.width / box)) * box,
  55.                     y: Math.floor(Math.random() * (canvas.height / box)) * box
  56.                 };
  57.             } else {
  58.                 // 没有吃到食物就移除蛇的最后一节
  59.                 snake.pop();
  60.             }
  61.         }

  62.         function gameLoop(){
  63.             ctx.clearRect(0, 0, canvas.width, canvas.height);
  64.             drawSnake();
  65.             drawFood();
  66.             moveSnake();
  67.             setTimeout(gameLoop, 100);
  68.         }

  69.         // 监听键盘事件,改变蛇的方向
  70.         document.addEventListener('keydown', event => {
  71.             if(event.keyCode == 37 && direction != 'RIGHT') direction = 'LEFT';
  72.             if(event.keyCode == 38 && direction != 'DOWN') direction = 'UP';
  73.             if(event.keyCode == 39 && direction != 'LEFT') direction = 'RIGHT';
  74.             if(event.keyCode == 40 && direction != 'UP') direction = 'DOWN';
  75.         });

  76.         // 开始游戏
  77.         gameLoop();

  78.     </script>
  79. </body>
  80. </html>
复制代码


### 解释一下代码:
1. **HTML部分**:这部分定义了网页的基础结构,包括标题和一个名为`gameCanvas`的画布元素,这个画布是我们绘制贪吃蛇世界的地方。
2. **CSS部分**:这里我们简单设置了一下页面和画布的样式,使画布居中并且添加了一个边框。
3. **JavaScript部分**:
   - **变量定义**:`canvas`和`ctx`是用来操作画布的,`snake`是一个数组,记录了每一节蛇的位置,`food`是食物的位置,`box`是每一个小方块的尺寸。
   - **绘制函数**:`drawSnake`函数会把蛇画出来,`drawFood`函数会把食物画出来。
   - **移动函数**:`moveSnake`函数会根据按键的方向移动蛇,还会判断蛇是否吃到了食物。
   - **游戏循环**:`gameLoop`函数会不断调用自己,用来刷新画布上的内容。
   - **键盘事件监听**:这部分监听键盘的方向键,改变蛇的移动方向。

你可以把这些代码复制到一个文件里,然后用浏览器打开看看,是不是就能玩到简单的贪吃蛇游戏啦!

希望你玩得开心,有问题的话记得随时来问我哦!
回复 支持 反对

使用道具 举报

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

本版积分规则

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