zoukankan      html  css  js  c++  java
  • 用turtle画一个雪人

    用turtle画一个雪人

    公选的第一个小作业

    程序说明

    总体设计

    躯干

    • 由两个半径不同的圆叠加组成,如下图。
    • 画笔颜色为白色,填充颜色为白色。
    • 由原点起笔,画半径50的小圆,接着移笔至小圆圆心,即(0,-50),起笔画半径60的圆,叠加在一起组成。

    围巾

    • 第一部分由一个曲边的矩形组成,上下两边为平行直线,左右两边为相同半径的半圆。如图
      • 画笔颜色为灰色,填充颜色为红色。
      • 位置在两个圆的交界处。由(0,-80)起笔,向右走48,画一个半径为8的半圆,再向左走96,画一个半径为8的半圆,再向右走48
    • 第二部分为围巾的下半部,为了显得有飘动的感觉,由直线曲线组成。
      • 先将画笔移至刚刚所画图像最下边直线的左端点,即(-48,-80),由此起笔。
      • 将笔的朝向调至-90度,即朝向y轴负方向。
      • 向向下走10,画一个半径30角度30的曲线,画一个半径10角度60的曲线,画一个半径50角度20的曲线,再将笔朝向调至面向x轴正方向,走20。之后的操作为以上操作的倒过来。

    帽子

    • 帽子底部
      • 帽子底部与围巾第一部分形状相同。
      • 画笔颜色为灰,填充颜色为白色。
      • 画笔起点为(-25*1.732,-25),画第一条线终点为原点,,长度为50,这样组成一个小角为30度的三角形。如图
    • 帽子中间
      • 由一个边长为50的等边三角形组成
      • 画笔颜色和填充颜色都为红色
      • 画笔由帽子底部最上面的直线的左端点起笔。画笔先抬起90度,即朝x轴正方向。前进50.朝向再顺时针旋转120度,前进50。
    • 帽子顶部
      • 由一个半径为5圆组成,画笔颜色和填充颜色都为白。先将画笔退后50,逆时针转30,由此为起点画圆

    面部

    • 眼睛以y轴为对称,位置分别为(-20,-35)(20,-35),画两个半径为10的黑圆
    • 鼻子形状和围巾第一部分相同,填充颜色为黄色。也以y轴为对称。起点为(-5,-45)
    • 嘴巴以y轴对称,画笔颜色为红,尺寸为3,起点为(-10,-50),画笔朝向y轴负方向,画一个半径为10的半圆曲线

    身体

    • 纽扣:从y轴的三个点(0,-100)(0,-120)(0,-140)依次画半径为10的黑点
    • 手臂:两个手臂以y轴为对称,分别起点为(-60,-100)(60,-100)。画笔颜色为棕色,尺寸为3,一只手臂抬起120度,一只抬起60度。走50长,之后再回退10,从这里画笔朝向转60度,再走10,画一个分叉。

    程序

    效果

    代码部分

    import turtle as t
    
    # 躯干部分
    # 第一个圆
    t.screensize(bg='grey')
    t.penup()
    t.color('white', 'white')
    t.pendown()
    t.begin_fill()
    t.circle(-50)
    t.end_fill()
    # 第二个圆
    t.penup()
    t.goto(0, -50)
    t.color('white', 'white')
    t.pendown()
    t.begin_fill()
    t.circle(-60)
    t.end_fill()
    
    # 围巾部分
    # 第一部分
    t.penup()
    t.goto(0, -80)
    t.pendown()
    t.color('grey', 'red')
    t.begin_fill()
    t.forward(48)
    t.circle(8, 180)
    t.forward(96)
    t.circle(8, 180)
    t.forward(48)
    t.end_fill()
    # 第二部分
    t.penup()
    t.goto(-48, -80)
    t.pendown()
    t.begin_fill()
    t.setheading(-90)
    t.forward(10)
    t.circle(-30, 30)
    t.circle(10, 60)
    t.circle(-50, 20)
    t.setheading(0)
    t.forward(20)
    t.setheading(90)
    t.circle(50, 20)
    t.circle(-10, 60)
    t.circle(30, 30)
    t.setheading(90)
    t.forward(10)
    t.end_fill()
    
    # 帽子部分
    # 帽子底部
    t.penup()
    t.goto(-25 * 1.73, -25)
    t.color('grey', 'white')
    t.setheading(30)
    t.pendown()
    t.begin_fill()
    t.forward(50)
    t.circle(5, 180)
    t.forward(50)
    t.circle(5, 180)
    t.end_fill()
    # 帽子中间
    t.penup()
    t.circle(5, -180)
    t.pendown()
    t.color('red', 'red')
    t.begin_fill()
    t.setheading(90)
    t.forward(50)
    t.right(120)
    t.forward(50)
    t.end_fill()
    # 帽子顶部
    t.penup()
    t.forward(-50)
    t.left(30)
    t.color('white', 'white')
    t.pendown()
    t.begin_fill()
    t.circle(5)
    t.end_fill()
    
    # 面部
    # 两个大眼睛
    t.penup()
    t.goto(-20, -35)
    t.pencolor('black')
    t.pendown()
    t.dot(10)
    t.penup()
    t.goto(20, -35)
    t.pencolor('black')
    t.pendown()
    t.dot(10)
    # 鼻子
    t.penup()
    t.goto(-5, -45)
    t.color('grey', 'yellow')
    t.pendown()
    t.begin_fill()
    t.forward(10)
    t.circle(3, 180)
    t.forward(10)
    t.circle(3, 180)
    t.end_fill()
    # 嘴巴
    t.penup()
    t.goto(-10, -50)
    t.pencolor('red')
    t.pensize(3)
    t.setheading(-90)
    t.pendown()
    t.circle(10, 180)
    
    # 身体部分
    # 扣子
    t.penup()
    t.goto(0, -100)
    t.pencolor('black')
    t.dot(10)
    t.penup()
    t.goto(0, -120)
    t.pencolor('black')
    t.dot(10)
    t.penup()
    t.goto(0, -140)
    t.pencolor('black')
    t.dot(10)
    # 两只手臂,左手
    t.penup()
    t.goto(-60, -100)
    t.pencolor('brown')
    t.pensize(5)
    t.setheading(120)
    t.pendown()
    t.forward(50)
    t.forward(-10)
    t.right(60)
    t.forward(10)
    # 两只手臂,右手
    t.penup()
    t.goto(60, -100)
    t.pencolor('brown')
    t.pensize(5)
    t.setheading(60)
    t.pendown()
    t.forward(50)
    t.forward(-10)
    t.right(-60)
    t.forward(10)
    
    # 藏画笔,完成
    t.hideturtle()
    t.done()
    
  • 相关阅读:
    15. DML, DDL, LOGON 触发器
    5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
    4. 跟踪标记 (Trace Flag) 610 对索引组织表(IOT)最小化日志
    14. 类似正则表达式的字符处理问题
    01. SELECT显示和PRINT打印超长的字符
    3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
    2. 跟踪标记 (Trace Flag) 3604, 3605 输出DBCC命令结果
    1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式
    0. 跟踪标记 (Trace Flag) 简介
    SpringBoot + Redis + Shiro 实现权限管理(转)
  • 原文地址:https://www.cnblogs.com/Qi-Lin/p/12182148.html
Copyright © 2011-2022 走看看