python用pygame贪吃蛇游戏的代码
时间: 2023-11-13 20:23:31 浏览: 130
以下是一个用pygame制作的贪吃蛇游戏的代码示例:
```python
import pygame
import random
# 初始化pygame
pygame.init()
# 创建窗口
screen = pygame.display.set_mode((500, 500))
# 创建蛇
class Snake():
def __init__(self):
self.body = [(200, 200), (190, 200), (180, 200)]
self.direction = 'right'
def move(self):
# 计算新的蛇头位置
if self.direction == 'right':
new_head = (self.body[0][0] + 10, self.body[0][1])
elif self.direction == 'left':
new_head = (self.body[0][0] - 10, self.body[0][1])
elif self.direction == 'up':
new_head = (self.body[0][0], self.body[0][1] - 10)
elif self.direction == 'down':
new_head = (self.body[0][0], self.body[0][1] + 10)
# 将新的蛇头插入到蛇身体的最前面
self.body.insert(0, new_head)
# 如果蛇头碰到食物,增加蛇身体长度
if self.body[0] == food.position:
food.randomize_position()
else:
self.body.pop()
# 如果蛇头碰到边缘或者蛇身体,游戏结束
if self.body[0][0] < 0 or self.body[0][0] > 490 or self.body[0][1] < 0 or self.body[0][1] > 490:
game_over()
for block in self.body[1:]:
if block == self.body[0]:
game_over()
def draw(self):
for block in self.body:
pygame.draw.rect(screen, (0, 255, 0), (block[0], block[1], 10, 10))
def turn_right(self):
if self.direction != 'left':
self.direction = 'right'
def turn_left(self):
if self.direction != 'right':
self.direction = 'left'
def turn_up(self):
if self.direction != 'down':
self.direction = 'up'
def turn_down(self):
if self.direction != 'up':
self.direction = 'down'
# 创建食物
class Food():
def __init__(self):
self.position = (random.randint(0, 49) * 10, random.randint(0, 49) * 10)
def draw(self):
pygame.draw.rect(screen, (255, 0, 0), (self.position[0], self.position[1], 10, 10))
def randomize_position(self):
self.position = (random.randint(0, 49) * 10, random.randint(0, 49) * 10)
# 创建游戏结束函数
def game_over():
pygame.quit()
exit()
# 创建蛇和食物
snake = Snake()
food = Food()
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
snake.turn_right()
elif event.key == pygame.K_LEFT:
snake.turn_left()
elif event.key == pygame.K_UP:
snake.turn_up()
elif event.key == pygame.K_DOWN:
snake.turn_down()
# 填充背景色
screen.fill((255, 255, 255))
# 移动和绘制蛇和食物
snake.move()
snake.draw()
food.draw()
# 刷新屏幕
pygame.display.update()
```
这个游戏创建了一个Snake类来表示蛇,使用一个列表来表示蛇的身体,初始时包含三个节,蛇的方向初始为向右。在游戏循环中,处理了退出事件和键盘事件,根据按键来改变蛇的方向。在移动蛇的时候,计算新的蛇头位置,将新的蛇头插入到蛇身体的最前面,如果蛇头碰到食物,增加蛇身体长度,如果蛇头碰到边缘或者蛇身体,游戏结束。在绘制的时候,绘制蛇的身体和食物。
阅读全文