猫史档案馆


作品分享【飞翔的小鸟】

用户:code猫的code猫的查看:0 回复:0 评论:0 创建时间:2024-08-25T13:58:14


import pygame
import random

# 初始化pygame
pygame.init()

# 游戏窗口设置
WIDTH, HEIGHT = 400, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("飞翔的小鸟")

# 颜色
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)

# 小鸟设置
bird_width = 40
bird_height = 30
bird_x = 50
bird_y = HEIGHT // 2
bird_velocity = 0
gravity = 0.5
lift = -10

# 障碍物设置
obstacle_width = 70
obstacle_height = random.randint(150, 400)
obstacle_x = WIDTH

# 游戏参数
score = 0
is_game_over = False
font = pygame.font.SysFont("Arial", 30)

# 主游戏循环
clock = pygame.time.Clock()

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_SPACE:
                bird_velocity += lift

    if not is_game_over:
        # 更新小鸟的位置
        bird_velocity += gravity
        bird_y += bird_velocity

        # 更新障碍物的位置
        obstacle_x -= 5

        # 检测碰撞
        if (obstacle_x < bird_x + bird_width < obstacle_x + obstacle_width) and (bird_y < obstacle_height or bird_y + bird_height > obstacle_height + 150):
            is_game_over = True

        # 生成新的障碍物
        if obstacle_x < 0:
            obstacle_x = WIDTH
            obstacle_height = random.randint(150, 400)
            score += 1

        # 背景
        screen.fill(WHITE)

        # 绘制小鸟
        pygame.draw.rect(screen, BLUE, (bird_x, bird_y, bird_width, bird_height))

        # 绘制障碍物
        pygame.draw.rect(screen, GREEN, (obstacle_x, 0, obstacle_width, obstacle_height))
        pygame.draw.rect(screen, GREEN, (obstacle_x, obstacle_height + 150, obstacle_width, HEIGHT - obstacle_height - 150))

        # 显示分数
        score_text = font.render(f"Score: {score}", True, (0, 0, 0))
        screen.blit(score_text, (10, 10))

        # 检查边界碰撞
        if bird_y < 0 or bird_y > HEIGHT:
            is_game_over = True

        pygame.display.flip()
        clock.tick(30)

    else:
        # 游戏结束
        game_over_text = font.render("游戏结束!按任意键重新开始", True, (255, 0, 0))
        screen.blit(game_over_text, (50, HEIGHT // 2 - 20))
        pygame.display.flip()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                # 重置游戏
                bird_y = HEIGHT // 2
                bird_velocity = 0
                obstacle_x = WIDTH
                score = 0
                is_game_over = False
游戏玩法


回复

上一页1 页 / 共 0下一页