Python 贪吃蛇游戏代码:入门教程及实现
以下是一个基本的 Python 贪吃蛇游戏的代码:
import pygame
import random
# 初始化游戏
pygame.init()
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 设置游戏窗口大小
window_width = 800
window_height = 600
window_size = (window_width, window_height)
game_window = pygame.display.set_mode(window_size)
pygame.display.set_caption('贪吃蛇')
# 设置游戏时钟
clock = pygame.time.Clock()
# 定义贪吃蛇的初始位置和速度
snake_pos = [[100, 50], [90, 50], [80, 50]]
snake_speed = 10
# 定义食物的初始位置
food_pos = [random.randrange(1, (window_width//10)) * 10, random.randrange(1, (window_height//10)) * 10]
food_spawn = True
# 定义游戏结束的标志
game_over = False
# 定义游戏结束的函数
def game_over_screen():
font = pygame.font.SysFont(None, 50)
text = font.render('Game Over! Press Q-Quit or C-Play Again', True, WHITE)
game_window.blit(text, [window_width//2 - text.get_width()//2, window_height//2 - text.get_height()//2])
pygame.display.update()
pygame.time.wait(500)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
pygame.quit()
quit()
if event.key == pygame.K_c:
game_loop()
# 定义游戏主循环
def game_loop():
global game_over, food_spawn
# 定义贪吃蛇的初始方向
snake_direction = 'RIGHT'
change_to = snake_direction
# 游戏循环
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_RIGHT or event.key == pygame.K_d:
change_to = 'RIGHT'
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
change_to = 'LEFT'
if event.key == pygame.K_UP or event.key == pygame.K_w:
change_to = 'UP'
if event.key == pygame.K_DOWN or event.key == pygame.K_s:
change_to = 'DOWN'
# 根据方向改变贪吃蛇的位置
if change_to == 'RIGHT' and snake_direction != 'LEFT':
snake_direction = 'RIGHT'
if change_to == 'LEFT' and snake_direction != 'RIGHT':
snake_direction = 'LEFT'
if change_to == 'UP' and snake_direction != 'DOWN':
snake_direction = 'UP'
if change_to == 'DOWN' and snake_direction != 'UP':
snake_direction = 'DOWN'
if snake_direction == 'RIGHT':
snake_pos[0][0] += snake_speed
if snake_direction == 'LEFT':
snake_pos[0][0] -= snake_speed
if snake_direction == 'UP':
snake_pos[0][1] -= snake_speed
if snake_direction == 'DOWN':
snake_pos[0][1] += snake_speed
# 绘制游戏背景
game_window.fill(BLACK)
# 绘制食物
pygame.draw.rect(game_window, GREEN, (food_pos[0], food_pos[1], 10, 10))
# 绘制贪吃蛇
for pos in snake_pos:
pygame.draw.rect(game_window, WHITE, (pos[0], pos[1], 10, 10))
# 检查贪吃蛇是否吃到食物
if snake_pos[0] == food_pos:
food_spawn = False
snake_pos.append([0, 0])
# 更新贪吃蛇的位置
if not food_spawn:
food_pos = [random.randrange(1, (window_width//10)) * 10, random.randrange(1, (window_height//10)) * 10]
else:
snake_pos.pop()
# 检查贪吃蛇是否碰到边界或自己
if snake_pos[0][0] >= window_width or snake_pos[0][0] < 0 or snake_pos[0][1] >= window_height or snake_pos[0][1] < 0:
game_over = True
for block in snake_pos[1:]:
if snake_pos[0] == block:
game_over = True
# 更新游戏画面
pygame.display.update()
# 控制游戏速度
clock.tick(30)
# 游戏结束时显示结束界面
game_over_screen()
# 运行游戏
game_loop()
# 退出游戏
pygame.quit()
quit()
这是一个基本的贪吃蛇游戏,使用了 pygame 库来实现游戏界面和交互。你可以尝试运行这段代码来玩贪吃蛇游戏。
原文地址: https://www.cveoy.top/t/topic/piUw 著作权归作者所有。请勿转载和采集!