import pygame
import sys
import random

# 初始化
pygame.init()
WIDTH, HEIGHT = 480, 700
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("简易公路驾驶游戏")
clock = pygame.time.Clock()

# 颜色定义
ROAD_COLOR = (60,60,60)
GRASS_COLOR = (35,120,35)
LINE_COLOR = (255,220,0)
CAR_COLOR = (220,30,30)

# 道路参数
road_w = 320
road_left = (WIDTH - road_w) // 2
line_width = 8
line_gap = 120
# 车道虚线列表
line_list = []
for i in range(8):
    line_list.append([WIDTH//2-line_width//2, i*-line_gap])

# 玩家小车数据
car_w, car_h = 36,62
car_x = WIDTH//2 - car_w//2
car_y = HEIGHT - 120
speed = 5
max_speed = 12

# 主循环开关
run = True
while run:
    screen.fill(GRASS_COLOR)
    # 绘制公路
    pygame.draw.rect(screen, ROAD_COLOR, (road_left,0,road_w,HEIGHT))

    # 更新+绘制车道虚线
    for line in line_list:
        line[1] += speed
        if line[1] > HEIGHT:
            line[1] = -line_gap
        pygame.draw.rect(screen, LINE_COLOR, (line[0], line[1], line_width, 55))

    # 事件捕获
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # 按键持续控制
    keys = pygame.key.get_pressed()
    # 左右移动
    if keys[pygame.K_LEFT] and car_x > road_left+5:
        car_x -= 6
    if keys[pygame.K_RIGHT] and car_x+car_w < road_left+road_w-5:
        car_x += 6
    # 加速减速
    if keys[pygame.K_UP] and speed < max_speed:
        speed += 0.25
    if keys[pygame.K_DOWN] and speed >2:
        speed -=0.25

    # 越出道路判定（撞到草地重置）
    if car_x <= road_left or car_x+car_w >= road_left+road_w:
        car_x = WIDTH//2 - car_w//2
        speed =5

    # 绘制小车
    pygame.draw.rect(screen, CAR_COLOR, (car_x, car_y, car_w, car_h), border_radius=8)

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

pygame.quit()
sys.exit()