import pygame
import sys

# 初始化pygame
pygame.init()

# 窗口设置
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("简易Pygame画图板")

# 颜色常量
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

# 初始参数
screen.fill(WHITE)  # 画布底色纯白
draw_color = BLACK  # 默认黑色画笔
brush_size = 5     # 画笔粗细
is_drawing = False # 标记是否按住鼠标绘画
last_pos = None    # 记录上一个鼠标坐标，用来平滑连线

# 字体（提示文字）
font = pygame.font.SysFont(None, 24)

# 主循环
clock = pygame.time.Clock()
running = True
while running:
    clock.tick(60)  # 帧率限制60

    # 事件遍历
    for event in pygame.event.get():
        # 关闭窗口退出
        if event.type == pygame.QUIT:
            running = False

        # 鼠标按下：开始画画
        if event.type == pygame.MOUSEBUTTONDOWN:
            is_drawing = True
            last_pos = event.pos

        # 鼠标松开：结束画画
        if event.type == pygame.MOUSEBUTTONUP:
            is_drawing = False
            last_pos = None

        # 键盘按键
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_c:  # C键清空画布
                screen.fill(WHITE)
            elif event.key == pygame.K_1:
                draw_color = BLACK
            elif event.key == pygame.K_2:
                draw_color = RED
            elif event.key == pygame.K_3:
                draw_color = GREEN
            elif event.key == pygame.K_4:
                draw_color = BLUE
            elif event.key == pygame.K_5:
                draw_color = YELLOW
            elif event.key == pygame.K_UP:  # 上箭头加粗画笔
                brush_size += 2
            elif event.key == pygame.K_DOWN: # 下箭头变细画笔
                if brush_size > 1:
                    brush_size -= 2

    # 鼠标拖动绘画
    if is_drawing:
        current_pos = pygame.mouse.get_pos()
        if last_pos:
            # 两点之间画直线，顺滑笔触
            pygame.draw.line(screen, draw_color, last_pos, current_pos, brush_size)
        last_pos = current_pos

    # 绘制底部操作提示文字
    tips = [
        "1黑 2红 3绿 4蓝 5黄 | C清空 | ↑加粗 ↓变细"
    ]
    text_surface = font.render(tips[0], True, (80, 80, 80))
    screen.blit(text_surface, (10, HEIGHT - 30))

    pygame.display.flip()

# 退出程序
pygame.quit()
sys.exit()