写一个贪食蛇的python代码
由于贪吃蛇的游戏规则较为复杂,需要涉及到多个方面的知识,因此在此提供一个基本的贪吃蛇游戏代码框架,供参考:
import pygame
import random
# 定义常量
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600
BLOCK_SIZE = 20
# 初始化pygame
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("贪吃蛇")
# 定义贪吃蛇类
class Snake():
def __init__(self):
self.head = [SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2] # 蛇头
self.body = [[self.head[0], self.head[1] + i * BLOCK_SIZE] for i in range(3)] # 蛇身
self.direction = "UP" # 初始方向
def move(self):
if self.direction == "UP":
self.head[1] -= BLOCK_SIZE
elif self.direction == "DOWN":
self.head[1] += BLOCK_SIZE
elif self.direction == "LEFT":
self.head[0] -= BLOCK_SIZE
elif self.direction == "RIGHT":
self.head[0] += BLOCK_SIZE
self.body.insert(0, list(self.head))
if self.head == food.position:
return 1
else:
self.body.pop()
return 0
def change_direction(self, direction):
if direction == "UP" and self.direction != "DOWN":
self.direction = "UP"
elif direction == "DOWN" and self.direction != "UP":
self.direction = "DOWN"
elif direction == "LEFT" and self.direction != "RIGHT":
self.direction = "LEFT"
elif direction == "RIGHT" and self.direction != "LEFT":
self.direction = "RIGHT"
def check_dead(self):
if not (0 <= self.head[0] <= SCREEN_WIDTH and 0 <= self.head[1] <= SCREEN_HEIGHT):
return 1
for block in self.body[1:]:
if self.head == block:
return 1
return 0
def draw(self, surface):
for block in self.body:
pygame.draw.rect(surface, (0, 255, 0), pygame.Rect(block[0], block[1], BLOCK_SIZE, BLOCK_SIZE))
pygame.draw.rect(surface, (255, 255, 255), pygame.Rect(block[0], block[1], BLOCK_SIZE, BLOCK_SIZE), 1)
# 定义食物类
class Food():
def __init__(self):
self.position = [random.randrange(1, (SCREEN_WIDTH // BLOCK_SIZE)) * BLOCK_SIZE,
random.randrange(1, (SCREEN_HEIGHT // BLOCK_SIZE)) * BLOCK_SIZE]
def draw(self, surface):
pygame.draw.rect(surface, (255, 0, 0), pygame.Rect(self.position[0], self.position[1], BLOCK_SIZE, BLOCK_SIZE))
# 初始化贪吃蛇和食物
snake = Snake()
food = Food()
# 定义游戏循环
clock = pygame.time.Clock()
while True:
clock.tick(10) # 控制帧率为10帧/秒
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
snake.change_direction("UP")
elif event.key == pygame.K_DOWN:
snake.change_direction("DOWN")
elif event.key == pygame.K_LEFT:
snake.change_direction("LEFT")
elif event.key == pygame.K_RIGHT:
snake.change_direction("RIGHT")
# 移动贪吃蛇
if snake.move() == 1:
food = Food()
# 检查贪吃蛇是否死亡
if snake.check_dead() == 1:
pygame.quit()
exit()
# 绘制游戏界面
screen.fill((255, 255, 255))
snake.draw(screen)
food.draw(screen)
pygame.display.update()
以上代码是一个基本的贪吃蛇游戏框架,具体细节还需要根据实际情况进行细化和完善。
原文地址: https://www.cveoy.top/t/topic/bBa1 著作权归作者所有。请勿转载和采集!