实现步骤:
-
初始化游戏环境:设置游戏窗口的大小、蛇的初始位置和方向、食物的位置等。
-
绘制游戏元素:使用Python的
pygame
库来绘制蛇的身体、食物和游戏界面。 -
处理键盘输入:监听键盘事件,根据用户的输入改变蛇的移动方向。
-
更新游戏状态:在游戏循环中更新蛇的位置,检查蛇是否吃到食物或撞到边界/自身。
-
渲染游戏画面:将更新后的游戏状态绘制到屏幕上。
-
游戏结束条件:当蛇撞到自己或边界时,游戏结束。
基础代码:
import pygame import random import time # 初始化pygame pygame.init() # 设置窗口大小 width, height = 640, 480 screen = pygame.display.set_mode((width, height)) # 设置颜色 white = (255, 255, 255) red = (255, 0, 0) green = (0, 255, 0) black = (0, 0, 0) # 设置蛇的初始位置和速度 snake_pos = [100, 50] snake_body = [[100, 50], [90, 50], [80, 50]] snake_speed = 15 direction = 'RIGHT' # 设置食物的位置 food_pos = [random.randrange(1, (width//10)) * 10, random.randrange(1, (height//10)) * 10] food_spawn = True # 游戏循环标志 running = True # 游戏时钟 clock = pygame.time.Clock() # 游戏主循环 while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP or event.key == ord('w'): direction = 'UP' if event.key == pygame.K_DOWN or event.key == ord('s'): direction = 'DOWN' if event.key == pygame.K_LEFT or event.key == ord('a'): direction = 'LEFT' if event.key == pygame.K_RIGHT or event.key == ord('d'): direction = 'RIGHT' # 更新蛇的位置 if direction == 'UP': snake_pos[1] -= 10 if direction == 'DOWN': snake_pos[1] += 10 if direction == 'LEFT': snake_pos[0] -= 10 if direction == 'RIGHT': snake_pos[0] += 10 # 添加新的蛇节 snake_body.insert(0, list(snake_pos)) if snake_pos in snake_body[1:]: running = False snake_body.pop() # 检查是否吃到食物 if snake_pos == food_pos: food_spawn = False food_pos = [random.randrange(1, (width//10)) * 10, random.randrange(1, (height//10)) * 10] # 绘制游戏元素 screen.fill(black) pygame.draw.rect(screen, green, (food_pos[0], food_pos[1], 10, 10)) for pos in snake_body: pygame.draw.rect(screen, white, (pos[0], pos[1], 10, 10)) # 更新屏幕显示 pygame.display.update() # 控制游戏速度 clock.tick(snake_speed) # 检查是否生成新的食物 if not food_spawn: food_spawn = True # 退出游戏 pygame.quit()
注意:在运行这段代码之前,请确保你已经安装了pygame
库。如果没有安装,可以通过以下命令安装:
pip install pygame
这段代码提供了一个基本的贪吃蛇游戏框架,你可以在此基础上添加更多的特性,比如得分系统、难度级别、游戏暂停和继续等。