pygame贪吃蛇游戏
时间: 2024-06-09 16:03:52 浏览: 198
pygame是一个流行的Python库,用于创建2D游戏和多媒体应用。贪吃蛇(Snake)是一款经典的电子游戏,玩家控制一个不断增长的身体,目标是吃到屏幕上的食物并避开自己的身体。在使用pygame制作贪吃蛇游戏时,你需要:
1. 安装pygame:首先确保你已经安装了Python,然后通过pip安装pygame,命令通常是`pip install pygame`。
2. 初始化pygame:在你的Python脚本中,导入pygame库并进行初始化,包括设置窗口大小、颜色等。
3. 创建游戏循环:游戏的主要部分是事件循环,处理用户的输入(键盘或鼠标),更新蛇的位置,并在屏幕上绘制。
4. 绘制元素:使用pygame中的`draw`方法绘制蛇的身体、食物和游戏区域的边界。
5. 游戏逻辑:管理蛇的增长、移动方向、食物生成以及碰撞检测,当蛇碰到边界或自身时游戏结束。
6. 响应事件:监听键盘按键,更新蛇的移动方向。
相关问题
pygame贪吃蛇游戏制作
以下是使用Python和Pygame制作的经典贪吃蛇游戏的示例代码:
```python
import pygame
import random
# 初始化游戏
pygame.init()
# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 设置屏幕尺寸
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("贪吃蛇游戏")
# 定义蛇的初始位置和大小
snake_block_size = 20
snake_speed = 15
font_style = pygame.font.SysFont(None, 50)
score_font = pygame.font.SysFont(None, 35)
def our_snake(snake_block_size, snake_list):
for x in snake_list:
pygame.draw.rect(screen, GREEN, [x[0], x[1], snake_block_size, snake_block_size])
def message(msg, color):
mesg = font_style.render(msg, True, color)
screen.blit(mesg, [screen_width / 6, screen_height / 3])
def game_loop():
game_over = False
game_close = False
# 初始化蛇的位置和移动方向
x1 = screen_width / 2
y1 = screen_height / 2
x1_change = 0
y1_change = 0
# 初始化蛇的身体
snake_List = []
Length_of_snake = 1
# 初始化食物的位置
foodx = round(random.randrange(0, screen_width - snake_block_size) / 20.0) * 20.0
foody = round(random.randrange(0, screen_height - snake_block_size) / 20.0) * 20.0
while not game_over:
while game_close:
screen.fill(BLACK)
message("游戏结束!按Q退出或C重新开始", RED)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
game_loop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block_size
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block_size
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block_size
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block_size
x1_change = 0
# 判断蛇是否撞墙
if x1 >= screen_width or x1 < 0 or y1 >= screen_height or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
screen.fill(BLACK)
pygame.draw.rect(screen, RED, [foodx, foody, snake_block_size, snake_block_size])
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block_size, snake_List)
pygame.display.update()
# 判断蛇是否吃到食物
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, screen_width - snake_block_size) / 20.0) * 20.0
foody = round(random.randrange(0, screen_height - snake_block_size) / 20.0) * 20.0
Length_of_snake += 1
# 设置游戏速度
pygame.time.Clock().tick(snake_speed)
pygame.quit()
game_loop()
```
你可以将以上代码保存为一个名为`snake_game.py`的文件,并在终端中运行该文件,即可开始游戏。
python用pygame贪吃蛇游戏的代码
以下是一个用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类来表示蛇,使用一个列表来表示蛇的身体,初始时包含三个节,蛇的方向初始为向右。在游戏循环中,处理了退出事件和键盘事件,根据按键来改变蛇的方向。在移动蛇的时候,计算新的蛇头位置,将新的蛇头插入到蛇身体的最前面,如果蛇头碰到食物,增加蛇身体长度,如果蛇头碰到边缘或者蛇身体,游戏结束。在绘制的时候,绘制蛇的身体和食物。
阅读全文