使用Pygame库编写贪吃蛇小游戏(python代码)

本文详细介绍了如何使用Python的Pygame库编写一个基础的贪吃蛇游戏,包括游戏初始化、事件监听、蛇的移动逻辑、食物生成和碰撞检测机制。
摘要由CSDN通过智能技术生成

 下面代码是一个使用Pygame库编写的贪吃蛇小游戏。

import pygame
import random
import copy

# 初始化蛇移动的位置
move_up = True
move_down = False
move_left = False
move_right = False

# 1.1游戏初始化
pygame.init()  # 初始化Pygame
clock = pygame.time.Clock()  # 创建Pygame时钟对象
pygame.display.set_caption("贪吃蛇小游戏")  # 设置窗口标题
screen = pygame.display.set_mode((500, 500))  # 创建游戏窗口

# 随机生成食物坐标
food_x = random.randint(0, 490)
food_y = random.randint(0, 490)
food_point = [food_x, food_y]

# 蛇的初始位置和大小
snake_list = [
    [10, 10]
]

# 控制贪吃蛇的速度
snake_speed = 10  # 调整这个值来改变速度

# 1.2游戏主循环
running = True
while running:
    for event in pygame.event.get():  # 遍历所有事件
        if event.type == pygame.QUIT:  # 如果点击关闭窗口按钮,则退出游戏
            running = False
        elif event.type == pygame.KEYDOWN:  # 如果有按键按下事件
            if event.key == pygame.K_UP:  # 如果按下上方向键
                move_up, move_down, move_left, move_right = True, False, False, False
            elif event.key == pygame.K_DOWN:  # 如果按下下方向键
                move_up, move_down, move_left, move_right = False, True, False, False
            elif event.key == pygame.K_LEFT:  # 如果按下左方向键
                move_up, move_down, move_left, move_right = False, False, True, False
            elif event.key == pygame.K_RIGHT:  # 如果按下右方向键
                move_up, move_down, move_left, move_right = False, False, False, True

    clock.tick(snake_speed)  # 控制贪吃蛇的速度

    screen.fill([255, 255, 255])  # 填充背景色为白色

    # 绘制食物
    food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)

    snake_rect = []
    for point in snake_list:
        # 绘制蛇的每个部分
        snake_rect.append(pygame.draw.circle(screen, [255, 0, 0], point, 5, 0))
        # 如果蛇头碰到食物,则吃掉食物,并重新生成食物
        if food_rect.collidepoint(point):
            snake_list.append(food_point)
            food_point = [random.randint(0, 490), random.randint(0, 490)]
            food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)
            break

    # 移动蛇的位置
    pos = len(snake_list) - 1
    while pos > 0:
        snake_list[pos] = copy.deepcopy(snake_list[pos - 1])
        pos -= 1

    # 根据移动方向更新蛇头位置
    if move_right:
        snake_list[pos][0] += 10
        if snake_list[pos][0] > 500:
            snake_list[pos][0] = 0

    if move_up:
        snake_list[pos][1] -= 10
        if snake_list[pos][1] < 0:
            snake_list[pos][1] = 500

    if move_down:
        snake_list[pos][1] += 10
        if snake_list[pos][1] > 500:
            snake_list[pos][1] = 0

    if move_left:
        snake_list[pos][0] -= 10
        if snake_list[pos][0] < 0:
            snake_list[pos][0] = 500

    # 如果蛇头碰到身体,则结束游戏
    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()  # 更新屏幕显示

pygame.quit()  # 退出Pygame

1.这段代码首先初始化了Pygame库,并设置了游戏窗口的大小和标题。

2.然后,它创建了一个食物,并初始化了蛇的位置和速度。

3.在游戏主循环中,它监听用户的按键事件,根据按键改变蛇的移动方向。

4.蛇的每个部分都会按照蛇头的移动方向移动,蛇头会吃掉食物,并生成新的食物。

5.如果蛇头碰到身体,则游戏结束。

效果如下:

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HITzwx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值