用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,画一个分叉。

程序#

效果#

代码部分#

Copy
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()
posted @   启林O_o  阅读(683)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示
CONTENTS