编写贪吃蛇游戏可以使用Python的`pygame`库。以下是一个简单的贪吃蛇游戏示例代码,使用`pygame`库实现游戏界面绘制和键盘事件监听:
import pygame
import random
初始化pygame
pygame.init()
设置游戏窗口大小
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
设置贪吃蛇尺寸
SNAKE_SIZE = 20
创建游戏窗口
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("贪吃蛇游戏")
定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
贪吃蛇的初始位置和移动方向
snake_x = WINDOW_WIDTH // 2
snake_y = WINDOW_HEIGHT // 2
snake_dx = 1
snake_dy = 0
贪吃蛇的身体
snake_body = [[snake_x, snake_y]]
食物的初始位置
food_x = random.randint(0, (WINDOW_WIDTH - SNAKE_SIZE) // SNAKE_SIZE) * SNAKE_SIZE
food_y = random.randint(0, (WINDOW_HEIGHT - SNAKE_SIZE) // SNAKE_SIZE) * SNAKE_SIZE
设置游戏时钟
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
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
snake_dy = -SNAKE_SIZE
elif event.key == pygame.K_DOWN:
snake_dy = SNAKE_SIZE
elif event.key == pygame.K_LEFT:
snake_dx = -SNAKE_SIZE
elif event.key == pygame.K_RIGHT:
snake_dx = SNAKE_SIZE
更新贪吃蛇位置
snake_x += snake_dx
snake_y += snake_dy
检查蛇头是否撞到墙壁
if snake_x < 0 or snake_x >= WINDOW_WIDTH or snake_y < 0 or snake_y >= WINDOW_HEIGHT:
game_over = True
检查蛇头是否吃到食物
if [snake_x, snake_y] == [food_x, food_y]:
food_x = random.randint(0, (WINDOW_WIDTH - SNAKE_SIZE) // SNAKE_SIZE) * SNAKE_SIZE
food_y = random.randint(0, (WINDOW_HEIGHT - SNAKE_SIZE) // SNAKE_SIZE) * SNAKE_SIZE
else:
移除蛇尾部分
snake_body.pop()
绘制贪吃蛇
screen.fill(WHITE)
for part in snake_body:
pygame.draw.rect(screen, BLACK, pygame.Rect(part, part, SNAKE_SIZE, SNAKE_SIZE))
绘制食物
pygame.draw.rect(screen, RED, pygame.Rect(food_x, food_y, SNAKE_SIZE, SNAKE_SIZE))
更新显示
pygame.display.flip()
控制帧率
clock.tick(10)
退出游戏
pygame.quit()
这段代码创建了一个简单的贪吃蛇游戏,玩家可以使用键盘上的方向键控制蛇的移动,吃到红色食物后蛇会变长,撞到墙壁或者自己游戏结束。
请注意,上述代码仅为示例,实际应用中可能需要添加更多功能,比如计分、不同级别的难度设置等。此外,代码中未包含退出机制,你可以根据需求添加一个退出按钮或者按键来结束游戏
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/145180.html