用python写贪吃蛇游戏如何生成多个食物的位置
时间: 2024-03-21 17:38:18 浏览: 59
Python编写一个贪吃蛇游戏
生成多个食物的位置可以使用一个列表来保存每个食物的位置,然后在每次游戏循环中检查贪吃蛇是否吃到了食物,如果吃到了,就从列表中删除这个食物,并生成一个新的食物的位置加入到列表中。
具体的实现可以参考下面的代码:
```python
from random import randint
# 定义食物类
class Food:
def __init__(self, x, y):
self.x = x
self.y = y
# 定义游戏类
class Game:
def __init__(self):
self.foods = [] # 食物列表
self.snake = Snake() # 贪吃蛇对象
def generate_food(self):
# 在随机位置生成一个新的食物
while True:
x = randint(0, 47) * 10
y = randint(0, 35) * 10
if not any(food.x == x and food.y == y for food in self.foods) and (x != self.snake.head.x or y != self.snake.head.y):
self.foods.append(Food(x, y))
break
def update(self):
# 检查贪吃蛇是否吃到了食物
for food in self.foods:
if self.snake.head.x == food.x and self.snake.head.y == food.y:
self.foods.remove(food)
self.generate_food()
self.snake.grow()
break
# 定义贪吃蛇类
class Snake:
def __init__(self):
self.head = Position(240, 320)
self.body = [self.head]
def grow(self):
# 贪吃蛇成长
tail = self.body[-1]
x = tail.x - (self.body[-2].x - tail.x)
y = tail.y - (self.body[-2].y - tail.y)
self.body.append(Position(x, y))
# 定义位置类
class Position:
def __init__(self, x, y):
self.x = x
self.y = y
# 游戏循环
game = Game()
while True:
# 更新游戏状态
game.update()
# 画出游戏界面
draw(game.snake, game.foods)
# 等待一段时间
sleep(0.1)
```
在上面的代码中,我们使用了一个列表foods来保存所有的食物位置,每次生成新的食物时,先判断这个位置是否已经被占用,如果没有被占用,则将新的食物位置加入到列表中。在每次更新游戏状态时,检查贪吃蛇是否吃到了食物,如果吃到了,则从列表中删除这个食物,并生成一个新的食物位置加入到列表中。
阅读全文