python实现贪吃蛇游戏

1、效果

请添加图片描述

2、实现过程

  1. 导入 Pygame 和 random 模块。
  2. 初始化 Pygame。
  3. 设置游戏界面大小、背景颜色和游戏标题。
  4. 定义颜色常量。
  5. 定义蛇的初始位置、大小和速度,食物的初始位置和大小,以及蛇的移动方向、身体坐标列表和计时器。
  6. 定义绘制函数,用于在屏幕上绘制蛇和食物。
  7. 进入主循环。
  8. 处理 Pygame 事件,包括窗口关闭事件和按键事件。
  9. 根据按键事件改变蛇的移动方向。
  10. 根据蛇的移动方向移动蛇的头部。
  11. 判断蛇是否吃到了食物,如果是,重新生成食物并在蛇的身体列表中添加头部坐标。
  12. 更新蛇的身体坐标列表。
  13. 判断游戏是否结束,如果是,显示分数并等待退出。
  14. 绘制蛇和食物。
  15. 控制蛇的移动速度,使游戏画面更加流畅。
  16. 回到主循环。

3、代码

import pygame
import random

# 初始化 Pygame
pygame.init()

# 设置游戏界面大小、背景颜色和游戏标题
screen_width = 640
screen_height = 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('贪吃蛇')

# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)

# 定义蛇的初始位置、大小和速度
snake_x = 100
snake_y = 100
snake_size = 20
snake_speed = 5


# 定义食物的初始位置和大小
food_x = random.randrange(0, screen_width - snake_size, 20)
food_y = random.randrange(0, screen_height - snake_size, 20)
food_size = 20

# 定义蛇的移动方向
snake_direction = 'right'

# 定义一个列表来保存蛇的身体坐标
snake_body = []

# 定义一个计时器来控制蛇的移动速度
clock = pygame.time.Clock()

# 定义一个函数来绘制蛇和食物
def draw(snake_x, snake_y, snake_body, food_x, food_y):
    screen.fill(BLACK)

    for pos in snake_body:
        pygame.draw.rect(screen, GREEN, [pos[0], pos[1], snake_size, snake_size])

    pygame.draw.rect(screen, RED, [food_x, food_y, food_size, food_size])

    pygame.display.update()

# 主循环
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_UP:
                snake_direction = 'up'
            elif event.key == pygame.K_DOWN:
                snake_direction = 'down'
            elif event.key == pygame.K_LEFT:
                snake_direction = 'left'
            elif event.key == pygame.K_RIGHT:
                snake_direction = 'right'

    # 移动蛇的头部
    if snake_direction == 'up':
        snake_y -= snake_speed
    elif snake_direction == 'down':
        snake_y += snake_speed
    elif snake_direction == 'left':
        snake_x -= snake_speed
    elif snake_direction == 'right':
        snake_x += snake_speed

    # 判断是否吃到食物
    if (snake_x == food_x and snake_y == food_y) or (snake_x == food_x and abs(snake_y - food_y) < snake_size) or (snake_y == food_y and abs(snake_x - food_x) < snake_size):
        food_x = random.randrange(0, screen_width - snake_size, 10)
        food_y = random.randrange(0, screen_height - snake_size, 10)
        snake_body.append([snake_x, snake_y])

    # 更新蛇的身体坐标
    snake_body.insert(0, [snake_x, snake_y])
    if len(snake_body) > 1:
        snake_body.pop()

    # 判断游戏是否结束
    if snake_x < 0 or snake_x > screen_width - snake_size or snake_y < 0 or snake_y > screen_height - snake_size or [snake_x, snake_y] in snake_body[1:]:
        # 游戏结束,显示分数并等待退出
        font = pygame.font.Font(None, 36)
        text = font.render('Score: ' + str(len(snake_body)), True, WHITE)
        screen.blit(text, ((screen_width - text.get_width()) / 2, (screen_height - text.get_height()) / 2))
        pygame.display.update()
        pygame.time.wait(2000)
        pygame.quit()
        quit()

    # 绘制蛇和食物
    draw(snake_x, snake_y, snake_body, food_x, food_y)


    # 控制蛇的移动速度
    clock.tick(20)

  • 15
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
回答: Python贪吃蛇游戏一个非常受欢迎的街机游戏,也是每个新手程序员都应该尝试的一个初学者友好项目。在这个游戏中,玩家的目标是控制蛇在不撞墙或自身的情况下吃到尽可能多的水果。学习如何创建贪吃蛇游戏是一种有趣而有趣的学习过程。\[1\] 要使用Python创建贪吃蛇游戏,可以使用Pygame库。首先,需要导入必要的库并初始化Pygame。然后,可以设置蛇的初始位置和大小,并创建一个函数来显示玩家的得分。此外,还需要创建一个游戏结束函数,以处理蛇撞墙或自身的情况。最后,创建一个主要的功能来控制游戏的进行。\[2\] 在贪吃蛇游戏中,蛇的移动是根据方向来判断的。可以使用pos变量来记录蛇的方向,例如pos(1, 0)表示蛇向右移动,pos(-1, 0)表示蛇向左移动,pos(0, 1)表示蛇向下移动,pos(0, -1)表示蛇向上移动。此外,可以通过控制时间来控制蛇的速度,通过刷新来更新游戏的状态。\[3\] #### 引用[.reference_title] - *1* *2* [100个Python实战项目(九)制作贪吃蛇游戏(评论抽奖送书)](https://blog.csdn.net/qq_44273429/article/details/124836313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python贪吃蛇 (完整代码+详细注释+粘贴即食)](https://blog.csdn.net/weixin_45662804/article/details/113098296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

微笑伴你而行

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

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

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

打赏作者

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

抵扣说明:

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

余额充值