下面是一个使用Python编写的简单贪吃蛇程序示例:\n\npython\nimport pygame\nimport time\nimport random\n\n# 初始化pygame\npygame.init()\n\n# 定义颜色\nWHITE = (255, 255, 255)\nBLACK = (0, 0, 0)\nRED = (255, 0, 0)\nGREEN = (0, 255, 0)\nBLUE = (0, 0, 255)\n\n# 窗口大小\nwindow_width = 800\nwindow_height = 600\n\n# 定义蛇的大小和速度\nsnake_size = 10\nsnake_speed = 15\n\n# 设置窗口大小\ngame_display = pygame.display.set_mode((window_width, window_height))\npygame.display.set_caption('贪吃蛇')\n\n# 定义时钟\nclock = pygame.time.Clock()\n\n# 字体设置\nfont_style = pygame.font.SysFont(None, 50)\nscore_font = pygame.font.SysFont(None, 35)\n\n\n# 显示得分\ndef show_score(score):\n value = score_font.render("得分: " + str(score), True, BLACK)\n game_display.blit(value, [10, 10])\n\n\n# 绘制蛇\ndef draw_snake(snake_size, snake_list):\n for x in snake_list:\n pygame.draw.rect(game_display, GREEN, [x[0], x[1], snake_size, snake_size])\n\n\n# 游戏结束时显示信息\ndef message(msg, color):\n mesg = font_style.render(msg, True, color)\n game_display.blit(mesg, [window_width / 6, window_height / 3])\n\n\n# 游戏循环\ndef game_loop():\n game_over = False\n game_close = False\n\n # 蛇的初始位置\n x1 = window_width / 2\n y1 = window_height / 2\n\n # 蛇在x和y轴上移动的初始速度\n x1_change = 0\n y1_change = 0\n\n # 初始化蛇的长度\n snake_list = []\n length_of_snake = 1\n\n # 随机生成食物的位置\n foodx = round(random.randrange(0, window_width - snake_size) / 10.0) * 10.0\n foody = round(random.randrange(0, window_height - snake_size) / 10.0) * 10.0\n\n while not game_over:\n\n while game_close:\n game_display.fill(WHITE)\n message("游戏结束! 按 Q-退出, C-重新开始", RED)\n show_score(length_of_snake - 1)\n pygame.display.update()\n\n # 处理游戏结束时的事件\n for event in pygame.event.get():\n if event.type == pygame.KEYDOWN:\n if event.key == pygame.K_q:\n game_over = True\n game_close = False\n if event.key == pygame.K_c:\n game_loop()\n\n # 处理游戏中的事件\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n game_over = True\n if event.type == pygame.KEYDOWN:\n if event.key == pygame.K_LEFT:\n x1_change = -snake_size\n y1_change = 0\n elif event.key == pygame.K_RIGHT:\n x1_change = snake_size\n y1_change = 0\n elif event.key == pygame.K_UP:\n y1_change = -snake_size\n x1_change = 0\n elif event.key == pygame.K_DOWN:\n y1_change = snake_size\n x1_change = 0\n\n # 判断蛇是否超出窗口边界\n if x1 >= window_width or x1 < 0 or y1 >= window_height or y1 < 0:\n game_close = True\n\n x1 += x1_change\n y1 += y1_change\n game_display.fill(WHITE)\n pygame.draw.rect(game_display, BLUE, [foodx, foody, snake_size, snake_size])\n snake_head = []\n snake_head.append(x1)\n snake_head.append(y1)\n snake_list.append(snake_head)\n\n # 控制蛇的长度\n if len(snake_list) > length_of_snake:\n del snake_list[0]\n\n # 判断蛇是否碰到自身\n for x in snake_list[:-1]:\n if x == snake_head:\n game_close = True\n\n draw_snake(snake_size, snake_list)\n show_score(length_of_snake - 1)\n\n pygame.display.update()\n\n # 判断蛇是否吃到食物\n if x1 == foodx and y1 == foody:\n foodx = round(random.randrange(0, window_width - snake_size) / 10.0) * 10.0\n foody = round(random.randrange(0, window_height - snake_size) / 10.0) * 10.0\n length_of_snake += 1\n\n # 控制蛇的速度\n clock.tick(snake_speed)\n\n pygame.quit()\n\n\n# 运行游戏循环\ngame_loop()\n\n\n运行这个程序,将在一个窗口中显示贪吃蛇游戏。你可以使用方向键来控制蛇的移动方向,吃到食物后蛇的长度会增加,如果蛇碰到窗口边界或自身,则游戏结束。游戏结束后,你可以按下 Q 键退出游戏,按下 C 键重新开始游戏。\n


原文地址: https://www.cveoy.top/t/topic/pLsc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录