我们需要以下几个主要元素:
pygame
库来实现。python# 导入第三方游戏制作库 pygame 安装命令: pip install pygame
import pygame
import random
import copy
# 定义蛇的位置
snake_list = [[10, 10]]
# 定义移动方向,一开始向上移动
move_up = True
move_down = False
move_left = False
move_right = False
# 定义食物的位置,随机的位置
food_point = [random.randint(10, 490), random.randint(10, 490)]
random.randint(5, 10)
"""初始化游戏"""
pygame.init()
# fps 刷新帧率
clock = pygame.time.Clock()
# 设置屏幕大小
screen = pygame.display.set_mode((500, 500))
# 制作标题
pygame.display.set_caption('贪吃蛇小游戏')
"""进入游戏,玩游戏"""
# 设置游戏开关
running = True
while running:
# 设置fps为20帧
clock.tick(20)
# 绘制屏幕为白色的
screen.fill([255, 255, 255])
# 用键盘控制移动方向
for event in pygame.event.get():
# 先判断按键是否按下
if event.type == pygame.KEYDOWN:
# 再判断按键是什么类型的
if event.key == pygame.K_UP:
move_up = True
move_down = False
move_left = False
move_right = False
if event.key == pygame.K_DOWN:
move_up = False
move_down = True
move_left = False
move_right = False
if event.key == pygame.K_LEFT:
move_up = False
move_down = False
move_left = True
move_right = False
if event.key == pygame.K_RIGHT:
move_up = False
move_down = False
move_left = False
move_right = True
# 绘制食物 pygame.draw.circle 绘制圆点的方法
food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)
# snake_rect 绘制蛇的身子
snake_rect = []
# 遍历蛇身子的每一个点
for snake_point in snake_list:
snake_rect_point = pygame.draw.circle(screen, [255, 0, 0], snake_point, 5, 0)
snake_rect.append(snake_rect_point)
# 检测碰撞 吃食物
if food_rect.collidepoint(snake_point):
# 蛇吃掉食物,增加一个点
snake_list.append(food_point)
# 重新绘制食物
food_point = [random.randint(10, 490), random.randint(10, 490)]
food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)
break
"""让蛇动起来"""
# 获取蛇身的长度
snake_len = len(snake_list) - 1
# 移动身子
while snake_len > 0:
# 把后面的一个点往前移动
snake_list[snake_len] = copy.deepcopy(snake_list[snake_len - 1])
snake_len -= 1
# 更改蛇头位置,向上移动
if move_up:
snake_list[snake_len][1] -= 10
if snake_list[snake_len][1] < 0:
snake_list[snake_len][1] = 500
# 向下移动
if move_down:
snake_list[snake_len][1] += 10
if snake_list[snake_len][1] > 500:
snake_list[snake_len][1] = 0
# 向左移动
if move_left:
snake_list[snake_len][0] -= 10
if snake_list[snake_len][0] < 0:
snake_list[snake_len][0] = 500
# 向右移动
if move_right:
snake_list[snake_len][0] += 10
if snake_list[snake_len][0] > 500:
snake_list[snake_len][0] = 0
# 如果蛇撞到自己 结束游戏
head_rect = snake_rect[0]
count = len(snake_rect)
while count > 1:
if head_rect.colliderect(snake_rect[count - 1]):
# 如果蛇撞到自己 游戏结束
running = False
count -= 1
# 将绘制的内容显示出来
pygame.display.update()
print('游戏结束,你的最终长度为', len(snake_list))
pygame.quit()
本文作者:柯南
本文链接:
版权声明:©2024 柯南 All rights reserved.