import pygame
import random

pygame.init()

# 窗口大小
W = 400
H = 600
screen = pygame.display.set_mode((W, H))
pygame.display.set_caption("超简单飞行躲避")
clock = pygame.time.Clock()

# 颜色
WHITE = (255,255,255)
BLUE = (0,100,255)
RED = (255,0,0)

# 玩家飞机
px = 50
py = H // 2
pspeed = 5

# 障碍物 改得【很窄】超好躲
ob_x = W
ob_y = random.randint(50, H-150)
ob_w = 15   # 变窄了，原来30，现在15
ob_h = 100
obspeed = 2.5  # 速度再放慢一点

score = 0
font = pygame.font.SysFont(None, 40)

run = True
while run:
    clock.tick(60)
    screen.fill(0)

    # 关闭窗口
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            run = False

    # 上下控制飞机
    key = pygame.key.get_pressed()
    if key[pygame.K_UP]:
        py -= pspeed
    if key[pygame.K_DOWN]:
        py += pspeed

    # 不让飞机飞出屏幕
    if py < 0:
        py = 0
    if py > H - 40:
        py = H - 40

    # 障碍物向左移动
    ob_x -= obspeed

    # 障碍物跑出右边，重置位置 + 加分
    if ob_x < -ob_w:
        ob_x = W
        ob_y = random.randint(50, H-150)
        score += 1

    # 画飞机
    pygame.draw.rect(screen, BLUE, (px, py, 40, 40))
    # 画窄障碍物
    pygame.draw.rect(screen, RED, (ob_x, ob_y, ob_w, ob_h))

    # 碰撞判断
    plane_rect = pygame.Rect(px, py, 40, 40)
    obs_rect = pygame.Rect(ob_x, ob_y, ob_w, ob_h)
    if plane_rect.colliderect(obs_rect):
        text = font.render("撞到了！", True, WHITE)
        screen.blit(text, (120, 250))

    # 显示分数
    s_text = font.render("分数："+str(score), True, WHITE)
    screen.blit(s_text, (10,10))

    pygame.display.flip()

pygame.quit()