import pygame
import sys
import math

pygame.init()

# 窗口设置
WIDTH, HEIGHT = 480, 720
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("2D Racing Game")

# 颜色
BLACK = (0, 0, 0)
GREY = (80, 80, 80)
WHITE = (255, 255, 255)
GREEN = (34, 139, 34)
RED = (220, 0, 0)

# 道路参数
road_w = 320
road_x = (WIDTH - road_w) // 2
line_height = 40
road_scroll_y = 0
scroll_speed = 6

# 玩家车
car_w, car_h = 40, 70
car_x = WIDTH // 2 - car_w // 2
car_y = HEIGHT - 120
car_speed_x = 7

score = 0
clock = pygame.time.Clock()
fps = 60

# 【修改重点：使用内置固定字体，避开SysFont环境bug】
font = pygame.font.Font(pygame.font.get_default_font(), 28)

running = True
while running:
    clock.tick(fps)
    screen.fill(GREEN)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 按键控制
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        car_x -= car_speed_x
    if keys[pygame.K_RIGHT]:
        car_x += car_speed_x

    # 道路边界限制
    car_x = max(road_x + 5, min(car_x, road_x + road_w - car_w - 5))

    # 滚动路面
    road_scroll_y += scroll_speed
    if road_scroll_y >= line_height * 2:
        road_scroll_y = 0
        score += 1

    # 画道路
    pygame.draw.rect(screen, GREY, (road_x, 0, road_w, HEIGHT))
    # 中间虚线（已经转int，不会range float报错）
    start_y = int(road_scroll_y % (line_height * 2) - line_height)
    for y in range(start_y, HEIGHT, line_height * 2):
        pygame.draw.rect(screen, WHITE, (WIDTH//2 - 4, y, 8, line_height))

    # 道路左右白线
    pygame.draw.rect(screen, WHITE, (road_x, 0, 6, HEIGHT))
    pygame.draw.rect(screen, WHITE, (road_x + road_w - 6, 0, 6, HEIGHT))

    # 画玩家小车
    car_rect = pygame.Rect(car_x, car_y, car_w, car_h)
    pygame.draw.rect(screen, RED, car_rect, border_radius=8)

    # 分数（英文）
    text = font.render(f"Score: {score}", True, WHITE)
    screen.blit(text, (20, 20))

    pygame.display.flip()

pygame.quit()
sys.exit()
