import random
import time
import os
# 初始化屏幕
os.system('cls' if os.name == 'nt' else 'clear')
# 定义屏幕大小
width, height = 20, 17
# 定义蛇的初始位置和长度
snake_pos = [10, 10]
snake_body = [[10, 10], [9, 10], [8, 10]]
# 定义食物的位置
food_pos = [random.randrange(1, width//2) * 2, random.randrange(1, height//2) * 2]
food_spawn = True
# 定义蛇的方向
direction = 'RIGHT'
change_to = direction
# 游戏主循环
while True:
# 显示蛇和食物
print("贪吃蛇游戏")
for pos in snake_body:
print("O", end=" ")
print()
print("贪吃蛇的位置: ", snake_pos)
print("食物的位置: ", food_pos)
# 获取用户输入
key = input("请输入方向键(W-A-S-D): ").upper()
# 检查用户输入是否有效
if key in ['W', 'A', 'S', 'D']:
change_to = key
# 确定蛇的方向
if change_to == 'W' and direction != 'S':
direction = 'UP'
elif change_to == 'A' and direction != 'E':
direction = 'LEFT'
elif change_to == 'S' and direction != 'N':
direction = 'DOWN'
elif change_to == 'D' and direction != 'W':
direction = 'RIGHT'
# 移动蛇
if direction == 'UP':
snake_pos[1] -= 1
elif direction == 'DOWN':
snake_pos[1] += 1
elif direction == 'LEFT':
snake_pos[0] -= 1
elif direction == 'RIGHT':
snake_pos[0] += 1
# 蛇身体增长
snake_body.insert(0, list(snake_pos))
if snake_pos == food_pos:
food_spawn = False
else:
snake_body.pop()
# 食物随机重新生成
if not food_spawn:
food_pos = [random.randrange(1, width//2) * 2, random.randrange(1, height//2) * 2]
food_spawn = True
# 检查游戏是否结束
if snake_pos[0] >= width or snake_pos[0] < 0 or snake_pos[1] >= height or snake_pos[1] < 0:
print("游戏结束!")
break
# 稍作延迟
time.sleep(0.1)
代码解析:
初始化屏幕:清屏,准备新的游戏。
定义屏幕大小:定义游戏区域的宽度和高度。
定义蛇的初始位置和长度:设定蛇的起始位置和初始长度。
定义食物的位置:在游戏区域内随机生成食物的位置。
定义蛇的方向:设定蛇的初始移动方向。
游戏主循环:游戏的主要循环,处理用户输入、蛇的移动、食物的生成和碰撞检测。
显示蛇和食物:打印出蛇和食物的位置。
获取用户输入:接收用户的方向键输入。
确定蛇的方向:根据用户的输入改变蛇的移动方向。
移动蛇:根据方向移动蛇的位置。
蛇身体增长:当蛇吃到食物时,身体增长。
食物随机重新生成:当蛇身体增长后,食物在新的位置生成。
检查游戏是否结束:检测蛇是否碰到边界或自己,如果是,则游戏结束。
稍作延迟:控制游戏更新的速度。
请注意,这段代码仅作为教学示例,未进行详尽的错误处理和游戏优化。在实际开发中,可能还需要考虑更多的用户体验和游戏平衡性问题。希望这对您有所帮助!