科学教育

搜索
查看: 563|回复: 3
打印 上一主题 下一主题

帮我生成一个贪吃蛇代码

[复制链接]

4

主题

16

帖子

58

积分

注册会员

Rank: 2

积分
58
跳转到指定楼层
楼主
发表于 2025-9-30 14:24:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮我生成一个贪吃蛇代码
回复

使用道具 举报

0

主题

1145

帖子

1715

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1715
沙发
发表于 2025-9-30 14:24:43 | 只看该作者
当然可以!贪吃蛇是一个经典的游戏,让我们一起来编写一个简单的贪吃蛇游戏代码吧。在这个代码中,我们会使用Python语言进行编写。

首先,我们需要安装一个叫做`pygame`的库,它可以帮助我们创建游戏窗口和处理游戏事件。你可以在命令行中输入以下命令来安装`pygame`库:

  1. pip install pygame
复制代码


接下来,让我们开始编写贪吃蛇游戏的代码:

  1. import pygame
  2. import time
  3. import random

  4. # 初始化pygame
  5. pygame.init()

  6. # 设置游戏窗口大小
  7. window_width = 800
  8. window_height = 600
  9. window = pygame.display.set_mode((window_width, window_height))
  10. pygame.display.set_caption('贪吃蛇游戏')

  11. # 定义颜色
  12. white = (255, 255, 255)
  13. black = (0, 0, 0)
  14. red = (255, 0, 0)
  15. green = (0, 255, 0)

  16. # 定义蛇和食物的大小
  17. snake_block = 10
  18. snake_speed = 15

  19. # 设置字体
  20. font_style = pygame.font.SysFont(None, 50)

  21. def our_snake(snake_block, snake_list):
  22.     for x in snake_list:
  23.         pygame.draw.rect(window, black, [x[0], x[1], snake_block, snake_block])

  24. def message(msg, color):
  25.     mesg = font_style.render(msg, True, color)
  26.     window.blit(mesg, [window_width / 6, window_height / 3])

  27. def gameLoop():
  28.     game_over = False
  29.     game_close = False

  30.     # 蛇的初始位置
  31.     x1 = window_width / 2
  32.     y1 = window_height / 2

  33.     # 蛇的初始移动方向
  34.     x1_change = 0
  35.     y1_change = 0

  36.     # 初始蛇身长度
  37.     snake_list = []
  38.     length_of_snake = 1

  39.     # 食物初始位置
  40.     foodx = round(random.randrange(0, window_width - snake_block) / 10.0) * 10.0
  41.     foody = round(random.randrange(0, window_height - snake_block) / 10.0) * 10.0

  42.     while not game_over:

  43.         while game_close == True:
  44.             window.fill(white)
  45.             message("你失败了!按Q-退出或C-重新开始", red)
  46.             pygame.display.update()

  47.         for event in pygame.event.get():
  48.             if event.type == pygame.KEYDOWN:
  49.                 if event.key == pygame.K_q:
  50.                     game_over = True
  51.                     game_close = False
  52.                 if event.key == pygame.K_c:
  53.                     gameLoop()

  54.         for event in pygame.event.get():
  55.             if event.type == pygame.QUIT:
  56.                 game_over = True

  57.             if event.type == pygame.KEYDOWN:
  58.                 if event.key == pygame.K_LEFT:
  59.                     x1_change = -snake_block
  60.                     y1_change = 0
  61.                 elif event.key == pygame.K_RIGHT:
  62.                     x1_change = snake_block
  63.                     y1_change = 0
  64.                 elif event.key == pygame.K_UP:
  65.                     y1_change = -snake_block
  66.                     x1_change = 0
  67.                 elif event.key == pygame.K_DOWN:
  68.                     y1_change = snake_block
  69.                     x1_change = 0

  70.         if x1 >= window_width or x1 < 0 or y1 >= window_height or y1 < 0:
  71.             game_close = True

  72.         x1 += x1_change
  73.         y1 += y1_change
  74.         window.fill(white)

  75.         pygame.draw.rect(window, green, [foodx, foody, snake_block, snake_block])
  76.         snake_Head = []
  77.         snake_Head.append(x1)
  78.         snake_Head.append(y1)
  79.         snake_list.append(snake_Head)
  80.         if len(snake_list) > length_of_snake:
  81.             del snake_list[0]

  82.         for x in snake_list[:-1]:
  83.             if x == snake_Head:
  84.                 game_close = True

  85.         our_snake(snake_block, snake_list)

  86.         pygame.display.update()

  87.         if x1 == foodx and y1 == foody:
  88.             foodx = round(random.randrange(0, window_width - snake_block) / 10.0) * 10.0
  89.             foody = round(random.randrange(0, window_height - snake_block) / 10.0) * 10.0
  90.             length_of_snake += 1

  91.         time.sleep(1 / snake_speed)

  92.     pygame.quit()
  93.     quit()

  94. gameLoop()
复制代码


在这个简单的贪吃蛇游戏里,你可以通过键盘的方向键来控制小蛇的移动,吃到食物会让蛇变长。当蛇撞墙或者撞到自己时,游戏结束。希望你喜欢这个贪吃蛇游戏!如果有任何问题,欢迎随时问我。
回复 支持 反对

使用道具 举报

4

主题

16

帖子

58

积分

注册会员

Rank: 2

积分
58
板凳
 楼主| 发表于 2025-9-30 14:36:36 | 只看该作者
生成html型的
回复 支持 反对

使用道具 举报

0

主题

1145

帖子

1715

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1715
地板
发表于 2025-9-30 14:36:44 | 只看该作者


当然,现在让我们一起来创建一个简单的HTML版本的贪吃蛇游戏。在这个版本中,我们将使用HTML、CSS和JavaScript来实现。以下是一个基本的贪吃蛇游戏的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.     #game-board {
  9.         width: 400px;
  10.         height: 400px;
  11.         border: 2px solid black;
  12.         position: relative;
  13.     }
  14.    
  15.     .snake {
  16.         width: 10px;
  17.         height: 10px;
  18.         background-color: black;
  19.         position: absolute;
  20.     }
  21.    
  22.     .food {
  23.         width: 10px;
  24.         height: 10px;
  25.         background-color: red;
  26.         position: absolute;
  27.     }
  28. </style>
  29. </head>
  30. <body>
  31. <div id="game-board">
  32. </div>

  33. <script>
  34. // 初始化游戏相关变量
  35. let board = document.getElementById('game-board');
  36. let snake = [{x: 200, y: 200}];
  37. let food = {x: 0, y: 0};
  38. let direction = 'right';
  39. let gameSpeed = 100;

  40. // 创建初始食物
  41. function createFood() {
  42.     food.x = Math.floor(Math.random() * 40) * 10;
  43.     food.y = Math.floor(Math.random() * 40) * 10;
  44.    
  45.     let foodElement = document.createElement('div');
  46.     foodElement.className = 'food';
  47.     foodElement.style.left = food.x + 'px';
  48.     foodElement.style.top = food.y + 'px';
  49.     board.appendChild(foodElement);
  50. }

  51. // 移动蛇的位置
  52. function moveSnake() {
  53.     let head = {x: snake[0].x, y: snake[0].y};
  54.    
  55.     // 根据方向更新蛇头位置
  56.     if (direction === 'up') head.y -= 10;
  57.     else if (direction === 'down') head.y += 10;
  58.     else if (direction === 'left') head.x -= 10;
  59.     else if (direction === 'right') head.x += 10;
  60.    
  61.     // 移除尾部并插入新蛇头
  62.     snake.pop();
  63.     snake.unshift(head);
  64. }

  65. // 渲染蛇和食物
  66. function render() {
  67.     // 清空游戏面板
  68.     board.innerHTML = '';
  69.    
  70.     // 渲染蛇
  71.     snake.forEach(segment => {
  72.         let segmentElement = document.createElement('div');
  73.         segmentElement.className = 'snake';
  74.         segmentElement.style.left = segment.x + 'px';
  75.         segmentElement.style.top = segment.y + 'px';
  76.         board.appendChild(segmentElement);
  77.     });
  78.    
  79.     // 渲染食物
  80.     let foodElement = document.createElement('div');
  81.     foodElement.className = 'food';
  82.     foodElement.style.left = food.x + 'px';
  83.     foodElement.style.top = food.y + 'px';
  84.     board.appendChild(foodElement);
  85. }

  86. // 启动游戏
  87. function startGame() {
  88.     createFood();
  89.       
  90.     setInterval(() => {
  91.         moveSnake();
  92.         render();
  93.     }, gameSpeed);
  94. }

  95. document.addEventListener('keydown', event => {
  96.     if (event.key === 'ArrowUp' && direction !== 'down') direction = 'up';
  97.     else if (event.key === 'ArrowDown' && direction !== 'up') direction = 'down';
  98.     else if (event.key === 'ArrowLeft' && direction !== 'right') direction = 'left';
  99.     else if (event.key === 'ArrowRight' && direction !== 'left') direction = 'right';
  100. });

  101. startGame();
  102. </script>
  103. </body>
  104. </html>
复制代码


这段代码会在网页上呈现一个简单的贪吃蛇游戏。你可以通过方向键来控制蛇的移动,吃到红色的食物后蛇会变长。希望这个例子对你有所帮助,如果有任何问题或者需要进一步解释,请随时告诉我。
回复 支持 反对

使用道具 举报

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

本版积分规则

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