Python作业3 绘制田字格

点击查看代码
import turtle

def draw_grid():
    # 设置画布和海龟
    turtle.speed(1)  # 设置画笔速度
    turtle.penup()   # 抬起画笔,移动时不画线

    # 绘制田字格的外框
    turtle.goto(-100, -100)  # 移动到左下角
    turtle.pendown()         # 放下画笔,开始画线
    for _ in range(4):       # 画一个正方形
        turtle.forward(200)  # 向前移动200单位
        turtle.left(90)      # 左转90度

    # 绘制两条中线
    # 水平中线
    turtle.penup()
    turtle.goto(-100, 0)     # 移动到水平中线的左端
    turtle.pendown()
    turtle.forward(200)      # 画水平中线

    # 垂直中线
    turtle.penup()
    turtle.goto(0, -100)     # 移动到垂直中线的下端
    turtle.pendown()
    turtle.left(90)          # 转向垂直方向
    turtle.forward(200)      # 画垂直中线
     # 绘制田字格的里面
    turtle.penup()
    turtle.goto(-80, -80)  # 移动到左下角
    turtle.pendown()         # 放下画笔,开始画线
    for _ in range(4):       # 画一个正方形
     turtle.forward(150)  # 向前移动200单位
     turtle.right(90)      # 左转90度
    # 绘制对角线(虚线)
    def draw_dashed_line(start_x, start_y, end_x, end_y):
        turtle.penup()
        turtle.goto(start_x, start_y)
        turtle.pendown()
        distance = ((end_x - start_x) ** 2 + (end_y - start_y) ** 2) ** 0.5
        dash_length = 10  # 虚线的每段长度
        space_length = 5  # 虚线的间隔长度
        angle = turtle.towards(end_x, end_y)  # 计算目标方向
        turtle.setheading(angle)  # 设置画笔方向
        for _ in range(int(distance // (dash_length + space_length))):
            turtle.pendown()
            turtle.forward(dash_length)
            turtle.penup()
            turtle.forward(space_length)
        # 画最后一段
        remaining = distance % (dash_length + space_length)
        if remaining > dash_length:
            turtle.pendown()
            turtle.forward(dash_length)
            turtle.penup()
            turtle.forward(remaining - dash_length)
        else:
            turtle.pendown()
            turtle.forward(remaining)

    # 绘制左上到右下的对角线
    draw_dashed_line(-100, 100, 100, -100)

    # 绘制左下到右上的对角线
    draw_dashed_line(-100, -100, 100, 100)

    # 隐藏海龟
    turtle.hideturtle()

    # 完成绘制
    turtle.done()

# 调用函数绘制田字格
draw_grid()

运行截图:

posted @ 2025-05-11 15:05  是否未晚  阅读(44)  评论(0)    收藏  举报