用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

贪食蛇python版源代码

2023-02-17 作者: Python自学举报

[python]代码库

## 代码
import random
import pygame

# 定义窗口的大小
# PyGame定义坐标系原点在左上角
WINDOW_WIDTH = 500
WINDOW_HEIGHT = 500

# 定义几个颜色
RED = (255, 0, 0)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)
BLACK = (0, 0, 0)

# 定义贪吃蛇的移动速度
SPEED = 1.0

# 定义一个记录游戏是否结束的变量
game_over = False

# 定义贪吃蛇的起始位置和方向
snake_left = 10
snake_top = 10
snake_direction = 'right'

# 定义贪吃蛇的身体的列表
snake_list = []

# 定义食物的位置
food_left = random.randint(5, WINDOW_WIDTH - 5)
food_top = random.randint(5, WINDOW_HEIGHT - 5)

# 初始化PyGame模块
pygame.init()

# 设置窗口的大小
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

# 设置游戏窗口的标题
pygame.display.set_caption('贪吃蛇游戏')

# 设置游戏的速度
clock = pygame.time.Clock()

# 定义贪吃蛇的长度
snake_len = 50

# 开始游戏的主循环
while True:
    # 当游戏结束的时候,退出循环
    if game_over:
        break

    # 每次循环时都会重新绘制窗口
    screen.fill(BLACK)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True

        # 如果检测到用户按下键盘上的按键
        if event.type == pygame.KEYDOWN:
            # 根据按键改变移动方向
            if event.key == pygame.K_LEFT:
                snake_direction = 'left'
            elif event.key == pygame.K_RIGHT:
                snake_direction = 'right'
            elif event.key == pygame.K_UP:
                snake_direction = 'up'
            elif event.key == pygame.K_DOWN:
                snake_direction = 'down'
    # 根据方向移动贪吃蛇的坐标
    if snake_direction == 'left':
        snake_left -= SPEED
    elif snake_direction == 'right':
        snake_left += SPEED
    elif snake_direction == 'up':
        snake_top -= SPEED
    elif snake_direction == 'down':
        snake_top += SPEED

    # 贪吃蛇的坐标添加到列表中
    snake_list.append((snake_left, snake_top))

    # 如果贪吃蛇的长度大于最大长度
    if len(snake_list) > snake_len:
        # 则删除最开始的坐标
        del snake_list[0]
    # 绘制贪吃蛇的身体
    for c_pos in snake_list:
        pygame.draw.rect(screen, GREEN, (c_pos[0], c_pos[1], 10, 10))

    # 如果贪吃蛇的坐标和食物的坐标重合,考虑误差±10像素
    if abs(snake_left - food_left) < 10 and abs(snake_top - food_top) < 10:
        # 重新随机一个食物的坐标
        food_left = random.randint(5, WINDOW_WIDTH - 5)
        food_top = random.randint(5, WINDOW_HEIGHT - 5)
        snake_len += SPEED

    # 绘制食物
    pygame.draw.rect(screen, RED, (food_left, food_top, 10, 10))

    # 如果贪吃蛇碰到边界
    if snake_left < 0 or snake_left > WINDOW_WIDTH or snake_top < 0 or snake_top > WINDOW_HEIGHT:
        game_over = True

    # 如果贪吃蛇碰到自身的身体
    for n_pos in snake_list[:-1]:
        if n_pos[0] == snake_left and n_pos[1] == snake_top:
            game_over = True

    # 绘制文字让用户知晓游戏进度
    score = len(snake_list)
    font = pygame.font.SysFont(None, 30)
    label = font.render('Score: {}'.format(score), 1, RED)
    screen.blit(label, (WINDOW_WIDTH / 2 - 25, 20))

    # 刷新屏幕
    pygame.display.flip()

    # 控制游戏的速度
    clock.tick(200)

# 退出游戏
pygame.quit()

[代码运行效果截图]


贪食蛇python版源代码


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...