当前位置:   article > 正文

用javascript制作网页贪吃蛇游戏_js贪吃蛇游戏代码

js贪吃蛇游戏代码
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>贪吃蛇游戏</title>
  6. </head>
  7. <body>
  8. <canvas id="gameCanvas" width="400" height="400"></canvas>
  9. <script src="snake.js"></script>
  10. </body>
  11. </html>
  1. javascript
  2. 复制代码
  3. // 定义画布和上下文
  4. const canvas = document.getElementById("gameCanvas");
  5. const ctx = canvas.getContext("2d");
  6. // 定义贪吃蛇的初始位置和大小
  7. let snake = [{ x: 10, y: 10 }, { x: 9, y: 10 }];
  8. let food = {};
  9. let score = 0;
  10. let speed = 100;
  11. // 定义绘制贪吃蛇的函数
  12. function drawSnake() {
  13. for (let i = 0; i < snake.length; i++) {
  14. ctx.fillStyle = "#00FF00"; // 贪吃蛇的身体颜色为绿色
  15. ctx.fillRect(snake[i].x * 10, snake[i].y * 10, 10, 10); // 每个方块的大小为10像素
  16. }
  17. }
  18. // 定义绘制食物的函数
  19. function drawFood() {
  20. ctx.fillStyle = "#FF0000"; // 食物的颜色为红色
  21. ctx.fillRect(food.x * 10, food.y * 10, 10, 10); // 每个方块的大小为10像素
  22. }
  23. // 定义移动贪吃蛇的函数
  24. function moveSnake() {
  25. let head = getHead(); // 获取贪吃蛇的头部位置
  26. let newHead = { x: head.x + dx, y: head.y + dy }; // 根据方向计算新的头部位置
  27. if (newHead.x < 0 || newHead.x >= canvas.width || newHead.y < 0 || newHead.y >= canvas.height) return; // 如果新的位置超出了画布范围,则返回
  28. if (newHead === food) food = generateFood(); // 如果新的位置是食物,则生成新的食物位置并更新食物状态
  29. else snake.pop(); // 如果新的位置不是食物,则删除最后一个身体块并将头部移动到新的位置上
  30. snake.unshift(newHead); // 将新的头部位置添加到贪吃蛇的前面,形成新的贪吃蛇身体块序列
  31. }
  32. // 定义生成随机食物位置的函数
  33. function generateFood() {
  34. let x = Math.floor(Math.random() * canvas.width); // 在画布上随机生成一个位置作为食物位置
  35. let y = Math.floor(Math.random() * canvas.height); // 在画布上随机生成一个位置作为食物位置
  36. while (snake.some((segment) => segment.x === x && segment.y === y)) x = Math.floor(Math.random() * canvas.width); // 如果食物位置已经被贪吃蛇占据,则重新生成一个新的食物位置
  1. // 定义画布和上下文
  2. const canvas = document.getElementById("gameCanvas");
  3. const ctx = canvas.getContext("2d");
  4. // 定义贪吃蛇的初始位置和大小
  5. let snake = [{ x: 10, y: 10 }, { x: 9, y: 10 }];
  6. let food = {};
  7. let score = 0;
  8. let speed = 100;
  9. // 定义绘制贪吃蛇的函数
  10. function drawSnake() {
  11. for (let i = 0; i < snake.length; i++) {
  12. ctx.fillStyle = "#00FF00"; // 贪吃蛇的身体颜色为绿色
  13. ctx.fillRect(snake[i].x * 10, snake[i].y * 10, 10, 10); // 每个方块的大小为10像素
  14. }
  15. }
  16. // 定义绘制食物的函数
  17. function drawFood() {
  18. ctx.fillStyle = "#FF0000"; // 食物的颜色为红色
  19. ctx.fillRect(food.x * 10, food.y * 10, 10, 10); // 每个方块的大小为10像素
  20. }
  21. // 定义移动贪吃蛇的函数
  22. function moveSnake() {
  23. let head = getHead(); // 获取贪吃蛇的头部位置
  24. let newHead = { x: head.x + dx, y: head.y + dy }; // 根据方向计算新的头部位置
  25. if (newHead.x < 0 || newHead.x >= canvas.width || newHead.y < 0 || newHead.y >= canvas.height) return; // 如果新的位置超出了画布范围,则返回
  26. if (newHead === food) food = generateFood(); // 如果新的位置是食物,则生成新的食物位置并更新食物状态
  27. else snake.pop(); // 如果新的位置不是食物,则删除最后一个身体块并将头部移动到新的位置上
  28. snake.unshift(newHead); // 将新的头部位置添加到贪吃蛇的前面,形成新的贪吃蛇身体块序列
  29. }
  30. // 定义生成随机食物位置的函数
  31. function generateFood() {
  32. let x = Math.floor(Math.random() * canvas.width); // 在画布上随机生成一个位置作为食物位置
  33. let y = Math.floor(Math.random() * canvas.height); // 在画布上随机生成一个位置作为食物位置
  34. while (snake.some((segment) => segment.x === x && segment.y === y)) x = Math.floor(Math.random() * canvas.width); // 如果食物位置已经被贪吃蛇占据,则重新生成一个新的食物位置
  35. food.x = x; // 将新的食物位置保存下来
  36. food.y = y;
  37. }
  38. //

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1001451
推荐阅读
相关标签
  

闽ICP备14008679号