python 函数 贪吃蛇 蛇怎么写
时间: 2024-04-23 09:27:49 浏览: 10
实现贪吃蛇游戏的关键是处理蛇的移动和碰撞逻辑。下面是一个简单的贪吃蛇游戏的函数实现示例:
```python
import random
# 定义蛇的初始位置和初始长度
snake = [(0, 0)]
snake_length = 1
# 定义蛇的移动方向
direction = "right"
# 定义食物的初始位置
food = (random.randint(0, 19), random.randint(0, 19))
# 定义游戏区域大小
grid_size = 20
# 移动蛇的函数
def move_snake():
global snake, direction
# 根据移动方向更新蛇头的位置
head = snake[0]
if direction == "up":
new_head = (head[0], head[1] - 1)
elif direction == "down":
new_head = (head[0], head[1] + 1)
elif direction == "left":
new_head = (head[0] - 1, head[1])
elif direction == "right":
new_head = (head[0] + 1, head[1])
# 将新的蛇头加入到蛇列表中
snake.insert(0, new_head)
# 如果蛇吃到了食物,长度增加,并生成新的食物位置
if new_head == food:
global snake_length, food
snake_length += 1
food = (random.randint(0, 19), random.randint(0, 19))
# 如果蛇长度超过了指定值,删除蛇尾
if len(snake) > snake_length:
snake.pop()
# 改变蛇的移动方向的函数
def change_direction(new_direction):
global direction
# 禁止蛇掉头,只能改变垂直或水平方向
if (new_direction == "up" and direction != "down") or \
(new_direction == "down" and direction != "up") or \
(new_direction == "left" and direction != "right") or \
(new_direction == "right" and direction != "left"):
direction = new_direction
# 检查蛇是否撞到自己或撞到墙壁的函数
def check_collision():
head = snake[0]
# 检查是否撞到墙壁
if head[0] < 0 or head[0] >= grid_size or \
head[1] < 0 or head[1] >= grid_size:
return True
# 检查是否撞到自己的身体
if head in snake[1:]:
return True
return False
# 游戏主循环函数
def game_loop():
while True:
move_snake()
if check_collision():
print("游戏结束!")
break
# 渲染游戏界面,这里只是简单打印出来,
# 你可以根据需要改成使用pygame等库来进行界面绘制
for y in range(grid_size):
for x in range(grid_size):
if (x, y) in snake:
print("X", end=" ")
elif (x, y) == food:
print("O", end=" ")
else:
print(".", end=" ")
print()
# 等待用户输入控制蛇的移动方向
new_direction = input("请输入方向(up/down/left/right): ")
change_direction(new_direction)
# 启动游戏
game_loop()
```
这个函数实现了一个简单的贪吃蛇游戏。其中,`snake`列表存储了蛇的身体坐标,`snake_length`表示蛇的长度,`direction`表示蛇的移动方向,`food`表示食物的位置。函数中的`move_snake()`函数用于移动蛇,`change_direction()`函数用于改变蛇的移动方向,`check_collision()`函数用于检查蛇是否撞到自己或撞到墙壁。游戏主循环函数`game_loop()`用于处理游戏逻辑。你可以根据需要修改和扩展这个函数来实现更完整的贪吃蛇游戏。