用python写一个贪吃蛇程序
时间: 2023-08-31 15:42:21 浏览: 65
### 回答1:
非常感谢您的提问。作为一个 AI 语言模型,我可以回答您的问题。以下是用 Python 编写贪吃蛇程序的示例代码:
```python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 设置游戏窗口大小
window_width = 640
window_height = 480
window = pygame.display.set_mode((window_width, window_height))
# 设置游戏标题
pygame.display.set_caption('贪吃蛇')
# 定义颜色
white = (255, 255, 255)
black = (, , )
red = (255, , )
# 定义蛇的初始位置和大小
snake_block_size = 10
snake_speed = 15
snake_list = []
snake_length = 1
snake_x = window_width / 2
snake_y = window_height / 2
# 定义食物的初始位置和大小
food_block_size = 10
food_x = round(random.randrange(, window_width - food_block_size) / 10.) * 10.
food_y = round(random.randrange(, window_height - food_block_size) / 10.) * 10.
# 定义字体
font_style = pygame.font.SysFont(None, 30)
# 定义游戏结束的函数
def game_over():
message = font_style.render('游戏结束!按 Q 退出,按 R 重新开始', True, red)
window.blit(message, [window_width / 6, window_height / 3])
# 游戏循环
game_over_flag = False
while not game_over_flag:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over_flag = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over_flag = True
if event.key == pygame.K_r:
snake_list.clear()
snake_length = 1
snake_x = window_width / 2
snake_y = window_height / 2
food_x = round(random.randrange(, window_width - food_block_size) / 10.) * 10.
food_y = round(random.randrange(, window_height - food_block_size) / 10.) * 10.
# 移动蛇
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
snake_x -= snake_block_size
if keys[pygame.K_RIGHT]:
snake_x += snake_block_size
if keys[pygame.K_UP]:
snake_y -= snake_block_size
if keys[pygame.K_DOWN]:
snake_y += snake_block_size
# 绘制蛇和食物
window.fill(white)
pygame.draw.rect(window, black, [food_x, food_y, food_block_size, food_block_size])
snake_head = []
snake_head.append(snake_x)
snake_head.append(snake_y)
snake_list.append(snake_head)
if len(snake_list) > snake_length:
del snake_list[]
for block in snake_list[:-1]:
if block == snake_head:
game_over_flag = True
for block in snake_list:
pygame.draw.rect(window, black, [block[], block[1], snake_block_size, snake_block_size])
pygame.display.update()
# 判断是否吃到食物
if snake_x == food_x and snake_y == food_y:
food_x = round(random.randrange(, window_width - food_block_size) / 10.) * 10.
food_y = round(random.randrange(, window_height - food_block_size) / 10.) * 10.
snake_length += 1
# 判断是否撞墙
if snake_x >= window_width or snake_x < or snake_y >= window_height or snake_y < :
game_over_flag = True
# 显示分数
score = font_style.render('分数: ' + str(snake_length - 1), True, black)
window.blit(score, [, ])
# 控制游戏速度
pygame.time.delay(snake_speed)
# 退出 Pygame
pygame.quit()
```
希望这个示例代码能够帮助您编写贪吃蛇程序。如果您有任何问题,请随时问我。
### 回答2:
贪吃蛇是一个经典的游戏,让我们用Python来编写一个简单的贪吃蛇程序吧!
首先,我们需要使用Pygame库来创建游戏界面。请确保已经安装了Pygame库。然后导入所需的模块:
```
import pygame
import random
import time
```
接下来,我们需要定义一些常量,包括游戏窗口的大小、贪吃蛇的初始位置和速度等:
```
WIDTH = 800
HEIGHT = 600
SNAKE_SIZE = 20
SNAKE_SPEED = 10
snake = [[WIDTH // 2, HEIGHT // 2]]
dx = SNAKE_SPEED
dy = 0
```
然后,我们创建一个游戏窗口,设置背景颜色和标题。
```
window = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("贪吃蛇游戏")
window.fill((0, 0, 0))
```
接下来,我们需要创建一个函数来移动和更新贪吃蛇的位置。
```
def move_snake(dx, dy):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
snake_head = [snake[0][0] + dx, snake[0][1] + dy]
snake.insert(0, snake_head)
snake.pop()
```
然后,我们需要创建一个函数来检测贪吃蛇是否吃到食物,并在吃到食物时增加贪吃蛇的长度。
```
def check_food():
if snake[0][0] == food[0] and snake[0][1] == food[1]:
x = random.randrange(1, WIDTH // SNAKE_SIZE) * SNAKE_SIZE
y = random.randrange(1, HEIGHT // SNAKE_SIZE) * SNAKE_SIZE
food[0] = x
food[1] = y
snake.append([0, 0])
```
最后,我们需要创建一个游戏主循环来更新游戏界面、检测贪吃蛇的碰撞和运动,并显示分数和食物。
```
score = 0
food = [random.randrange(1, WIDTH // SNAKE_SIZE) * SNAKE_SIZE,
random.randrange(1, HEIGHT // SNAKE_SIZE) * SNAKE_SIZE]
while True:
window.fill((0, 0, 0))
for pos in snake:
pygame.draw.rect(window, (255, 255, 255), (pos[0], pos[1], SNAKE_SIZE, SNAKE_SIZE))
pygame.draw.rect(window, (255, 0, 0), (food[0], food[1], SNAKE_SIZE, SNAKE_SIZE))
move_snake(dx, dy)
check_food()
pygame.display.update()
```
这就是一个简单的贪吃蛇程序的实现方式。你可以按照个人喜好进行功能扩展和美化。希望你能通过这个程序进一步学习和熟悉Python编程!
### 回答3:
贪吃蛇是一种经典的小游戏,可以用Python语言编写一个简单的贪吃蛇程序。下面是一个简单的示例:
```python
import pygame
import random
# 初始化游戏
pygame.init()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("贪吃蛇")
# 定义颜色
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
green = pygame.Color(0, 255, 0)
blue = pygame.Color(0, 0, 255)
# 定义蛇的初始位置和大小
snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
snake_direction = "RIGHT"
# 定义食物的初始位置
food_position = [random.randrange(1, (width // 10)) * 10, random.randrange(1, (height // 10)) * 10]
food_spawn = True
# 定义游戏时钟
clock = pygame.time.Clock()
# 定义游戏结束标志
game_over = False
# 游戏主循环
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
# 监听键盘事件,控制蛇的移动方向
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and snake_direction != "DOWN":
snake_direction = "UP"
if event.key == pygame.K_DOWN and snake_direction != "UP":
snake_direction = "DOWN"
if event.key == pygame.K_LEFT and snake_direction != "RIGHT":
snake_direction = "LEFT"
if event.key == pygame.K_RIGHT and snake_direction != "LEFT":
snake_direction = "RIGHT"
# 移动蛇的身体
if snake_direction == "UP":
snake_position[1] -= 10
if snake_direction == "DOWN":
snake_position[1] += 10
if snake_direction == "LEFT":
snake_position[0] -= 10
if snake_direction == "RIGHT":
snake_position[0] += 10
# 更新蛇的身体
snake_body.insert(0, list(snake_position))
# 判断贪吃蛇是否吃到了食物
if snake_position[0] == food_position[0] and snake_position[1] == food_position[1]:
food_spawn = False
else:
snake_body.pop()
# 生成新的食物
if not food_spawn:
food_position = [random.randrange(1, (width // 10)) * 10, random.randrange(1, (height // 10)) * 10]
food_spawn = True
# 绘制游戏背景
screen.fill(black)
# 绘制蛇
for position in snake_body:
pygame.draw.rect(screen, green, pygame.Rect(position[0], position[1], 10, 10))
# 绘制食物
pygame.draw.rect(screen, blue, pygame.Rect(food_position[0], food_position[1], 10, 10))
# 更新屏幕显示
pygame.display.update()
# 判断贪吃蛇是否碰壁或吃到自己
if snake_position[0] >= width or snake_position[0] < 0 or snake_position[1] >= height or snake_position[1] < 0:
game_over = True
for block in snake_body[1:]:
if snake_position[0] == block[0] and snake_position[1] == block[1]:
game_over = True
# 控制游戏速度
clock.tick(20)
# 结束游戏
pygame.quit()
```
这个程序利用pygame库实现了一个简单的贪吃蛇游戏。游戏窗口大小为640x480,蛇身由矩形组成,食物为蓝色的矩形,背景为黑色。玩家通过键盘方向键控制蛇的移动方向,目标是吃掉尽可能多的食物。当贪吃蛇碰壁或者碰到自己时游戏结束。