用户:
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
游戏玩法