科学教育

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

李沐阳贪吃蛇

[复制链接]

1

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
跳转到指定楼层
楼主
发表于 2025-10-11 14:58:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
帮我生成一个贪吃蛇的网页代码
回复

使用道具 举报

0

主题

1145

帖子

1715

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1715
沙发
发表于 2025-10-11 14:58:18 | 只看该作者
当我们创建一个贪吃蛇游戏的网页时,通常需要使用HTML、CSS和JavaScript来实现。以下是一个简单的贪吃蛇游戏的网页代码示例:

1. 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. <link rel="stylesheet" href="style.css">
  8. </head>
  9. <body>
  10. <div class="game-container">
  11.     <canvas id="gameCanvas"></canvas>
  12. </div>
  13. <script src="script.js"></script>
  14. </body>
  15. </html>
复制代码


2. CSS部分(style.css):
  1. body {
  2.     display: flex;
  3.     justify-content: center;
  4.     align-items: center;
  5.     height: 100vh;
  6.     margin: 0;
  7. }

  8. .game-container {
  9.     position: relative;
  10. }

  11. #gameCanvas {
  12.     border: 1px solid #000;
  13. }
复制代码


3. JavaScript部分(script.js):
  1. const canvas = document.getElementById("gameCanvas");
  2. const ctx = canvas.getContext("2d");

  3. const tileSize = 20;
  4. const canvasSize = 600;

  5. canvas.width = canvasSize;
  6. canvas.height = canvasSize;

  7. let snake = [
  8.     { x: 10, y: 10 },
  9.     { x: 10, y: 11 },
  10.     { x: 10, y: 12 }
  11. ];

  12. let food = { x: 15, y: 15 };

  13. function drawSnake() {
  14.     ctx.fillStyle = "green";
  15.     snake.forEach(part => ctx.fillRect(part.x * tileSize, part.y * tileSize, tileSize, tileSize));
  16. }

  17. function drawFood() {
  18.     ctx.fillStyle = "red";
  19.     ctx.fillRect(food.x * tileSize, food.y * tileSize, tileSize, tileSize);
  20. }

  21. function moveSnake() {
  22.     const head = { x: snake[0].x, y: snake[0].y };
  23.     if (head.x === food.x && head.y === food.y) {
  24.         snake.push({ ...snake[snake.length - 1] });
  25.         food.x = Math.floor(Math.random() * (canvasSize / tileSize));
  26.         food.y = Math.floor(Math.random() * (canvasSize / tileSize));
  27.     }
  28.     for (let i = snake.length - 1; i > 0; i--) {
  29.         snake[i] = { ...snake[i - 1] };
  30.     }
  31.     switch (direction) {
  32.         case "up":
  33.             head.y--;
  34.             break;
  35.         case "down":
  36.             head.y++;
  37.             break;
  38.         case "left":
  39.             head.x--;
  40.             break;
  41.         case "right":
  42.             head.x++;
  43.             break;
  44.     }
  45.     snake[0] = head;
  46. }

  47. function clearCanvas() {
  48.     ctx.clearRect(0, 0, canvas.width, canvas.height);
  49. }

  50. function draw() {
  51.     clearCanvas();
  52.     moveSnake();
  53.     drawSnake();
  54.     drawFood();
  55. }

  56. let direction = "right";

  57. document.addEventListener("keydown", (e) => {
  58.     if (e.key === "ArrowUp" && direction !== "down") direction = "up";
  59.     if (e.key === "ArrowDown" && direction !== "up") direction = "down";
  60.     if (e.key === "ArrowLeft" && direction !== "right") direction = "left";
  61.     if (e.key === "ArrowRight" && direction !== "left") direction = "right";
  62. });

  63. setInterval(draw, 100);
复制代码


通过将上述代码保存为相应文件(如index.html、style.css和script.js),在浏览器中打开index.html文件,即可运行简单的贪吃蛇游戏。玩家可以通过↑ ↓ ← →键控制蛇的移动,吃到食物后蛇会变长,若蛇撞墙或撞到自己则游戏结束。希望这个简单的示例能帮助你开始制作贪吃蛇游戏!
回复 支持 反对

使用道具 举报

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

本版积分规则

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