import pygame
import random
import sys

# 初始化
pygame.init()

# 屏幕设置
WIDTH, HEIGHT = 1400, 1020
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("2D 赛车小游戏")

clock = pygame.time.Clock()
FPS = 60

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

# 字体
font = pygame.font.SysFont(None, 48)

def draw_text(text, color, x, y):
    img = font.render(text, True, color)
    screen.blit(img, (x, y))

# 玩家赛车
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((50, 90), pygame.SRCALPHA)
        pygame.draw.polygon(self.image, BLUE, [(25, 0), (0, 90), (50, 90)])
        self.rect = self.image.get_rect(center=(WIDTH // 2, HEIGHT - 120))
        self.speed = 8

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT] and self.rect.left > 40:
            self.rect.x -= self.speed
        if keys[pygame.K_RIGHT] and self.rect.right < WIDTH - 40:
            self.rect.x += self.speed

# 敌方车辆
class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((50, 90), pygame.SRCALPHA)
        pygame.draw.polygon(self.image, RED, [(25, 90), (0, 0), (50, 0)])
        self.rect = self.image.get_rect(
            center=(random.randint(60, WIDTH - 60), -100)
        )
        self.speed = random.randint(5, 9)

    def update(self):
        self.rect.y += self.speed
        if self.rect.top > HEIGHT:
            self.kill()

# 道路边线
def draw_road():
    screen.fill(GRAY)
    pygame.draw.rect(screen, WHITE, (30, 0, 10, HEIGHT))
    pygame.draw.rect(screen, WHITE, (WIDTH - 40, 0, 10, HEIGHT))

# 主游戏
def main():
    player = Player()
    sprites = pygame.sprite.Group(player)
    enemies = pygame.sprite.Group()

    enemy_timer = 0
    score = 0
    running = True

    while running:
        clock.tick(FPS)
        enemy_timer += 1

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        # 生成敌人
        if enemy_timer > 30:
            enemies.add(Enemy())
            sprites.add(enemies)
            enemy_timer = 0

        sprites.update()

        # 碰撞检测
        if pygame.sprite.spritecollideany(player, enemies):
            running = False

        score += 1

        # 绘制
        draw_road()
        sprites.draw(screen)
        draw_text(f"Score: {score}", WHITE, 10, 10)
        pygame.display.flip()

    # 游戏结束画面
    screen.fill(GRAY)
    draw_text("Game Over", RED, WIDTH // 2 - 110, HEIGHT // 2 - 40)
    draw_text(f"Score: {score}", WHITE, WIDTH // 2 - 90, HEIGHT // 2 + 20)
    pygame.display.flip()
    pygame.time.delay(3000)

if __name__ == "__main__":
    main()