生日蛋糕和小猪佩奇搭配 Python乌龟(turtle库)


前言

画画这辈子是不可能画画的,看到很多视频平板画,咱用来用乌龟库来试试,论坛很多大佬用这个花了很多奇特的东西,咋也花点时间搞搞


Turtle是什么?

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
turtle名称含义为“海龟”,我们想象一只海龟,位于显示器上窗体的正中心,在画布上游走,它游走的轨迹就形成了绘制的图形。
海龟的运动是由程序控制的,它可以变换颜色,改变大小(宽度)等

内容方面

废话不多说,主函数代码如下:

from turtle import*
import drawbirthdrawbirth.initial_background()
pencolor("white")
drawbirth.cake()        # 蛋糕画线填充
drawbirth.ranges()      # 随机彩点
drawbirth.texts()       # 文字
ts = getscreen()
ts.getcanvas().postscript(file="ts1.eps")
drawbirth.setting()     # 画布设置
drawbirth.brandon()
tss = getscreen()
tss.getcanvas().postscript(file="tss1.eps")
done()

对进行初始设置,定义划线函数

比较基本的一些准备

def initial_background():# 设置背景颜色,窗口位置以及大小bgcolor("#d3dae8")setup(1000, 800)  # set(width, height):输入宽和高为整数时,表示像素;为小数时,表示占据电脑屏幕的比例speed(500)penup()  # 画笔抬起,移动时不绘制图形goto(150, 0)  # 将画笔移动到坐标为(x,y)的位置pendown()def draw_y(period, angle):radian = math.radians(angle)return period * math.sin(radian)def draw_x(period, angle):# 定义x,y的划线函数radian = math.radians(angle)return period * math.cos(radian)

画蛋糕

画蛋糕步骤比较多,主要控制划线想X,Y(数学真的很重要QAQ!!)

def cake():for i in range(360):x = draw_x(150, i)y = draw_y(60, i)goto(x, y)fillcolor("#fef5f7")end_fill()begin_fill()for i in range(180):x = draw_x(150, -i)y = draw_y(70, -i)goto(x, y)for i in range(180, 360):x = draw_x(150, i)y = draw_y(60, i)goto(x, y)fillcolor("#f2d7dd")end_fill()pu()goto(120, 0)pd()begin_fill()for i in range(360):x = draw_x(120, i)y = draw_y(48, i)goto(x, y)fillcolor("#cbd9f9")end_fill()begin_fill()pencolor("#fee48c")for i in range(540):x = draw_x(120, i)y = draw_y(48, i) + 70goto(x, y)goto(-120, 0)fillcolor("#cbd9f9")end_fill()pu()goto(120, 70)pd()pencolor("#fff0f3")begin_fill()for i in range(360):x = draw_x(120, i)y = draw_y(48, i) + 70goto(x, y)fillcolor("#fff0f3")end_fill()pu()goto(110, 70)pd()pencolor("#fff9fb")begin_fill()for i in range(360):x = draw_x(110, i)y = draw_y(44, i) + 70goto(x, y)fillcolor("#fff9fb")end_fill()pu()goto(120, 0)pd()begin_fill()pencolor("#ffa79d")for i in range(180):x = draw_x(120, -i)y = draw_y(48, -i) + 10goto(x, y)goto(-120, 0)for i in range(180, 360):x = draw_x(120, i)y = draw_y(48, i)goto(x, y)fillcolor("#ffa79d")end_fill()pu()goto(120, 70)pd()begin_fill()pensize(4)pencolor("#fff0f3")for i in range(1800):x = draw_x(120, 0.1 * i)y = draw_y(-18, i) + 10goto(x, y)goto(-120, 70)pensize(1)for i in range(180, 360):x = draw_x(120, i)y = draw_y(48, i) + 70goto(x, y)fillcolor("#fff0f3")end_fill()pu()goto(80, 70)pd()begin_fill()pencolor("#6f3732")goto(80, 120)for i in range(180):x = draw_x(80, i)y = draw_y(32, i) + 120goto(x, y)goto(-80, 70)for i in range(180, 360):x = draw_x(80, i)y = draw_y(32, i) + 70goto(x, y)fillcolor("#6f3732")end_fill()pu()goto(80, 120)pd()pencolor("#ffaaa0")begin_fill()for i in range(360):x = draw_x(80, i)y = draw_y(32, i) + 120goto(x, y)fillcolor("#ffaaa0")end_fill()pu()goto(70, 120)pd()pencolor("#ffc3be")begin_fill()for i in range(360):x = draw_x(70, i)y = draw_y(28, i) + 120goto(x, y)fillcolor("#ffc3be")end_fill()pu()goto(80, 120)pd()begin_fill()pensize(3)pencolor("#ffaaa0")for i in range(1800):x = draw_x(80, 0.1 * i)y = draw_y(-12, i) + 80goto(x, y)goto(-80, 120)pensize(1)for i in range(180, 360):x = draw_x(80, i)y = draw_y(32, i) + 120goto(x, y)fillcolor("#ffaaa0")end_fill()pu()goto(64, 120)pd()pencolor("#b1c9e9")begin_fill()for i in range(360):x = draw_x(4, i) + 60y = draw_y(1, i) + 120goto(x, y)goto(64, 170)for i in range(540):x = draw_x(4, i) + 60y = draw_y(1, i) + 170goto(x, y)goto(56, 120)fillcolor("#b1c9e9")end_fill()pencolor("white")pensize(2)for i in range(1, 6):goto(64, 120 + 10 * i)pu()goto(56, 120 + 10 * i)pd()pu()goto(60, 170)pd()goto(60, 180)pensize(1)pu()goto(64, 190)pd()pencolor("#f1add1")begin_fill()for i in range(360):x = draw_x(4, i) + 60y = draw_y(10, i) + 190goto(x, y)fillcolor("#f1add1")end_fill()pu()goto(-56, 120)pd()pencolor("#b1c9e9")begin_fill()for i in range(360):x = draw_x(4, i) - 60y = draw_y(1, i) + 120goto(x, y)goto(-56, 170)for i in range(540):x = draw_x(4, i) - 60y = draw_y(1, i) + 170goto(x, y)goto(-64, 120)fillcolor("#b1c9e9")end_fill()pencolor("white")pensize(2)for i in range(1, 6):goto(-56, 120 + 10 * i)pu()goto(-64, 120 + 10 * i)pd()pu()goto(-60, 170)pd()goto(-60, 180)pensize(1)pu()goto(-56, 190)pd()pencolor("#f1add1")begin_fill()for i in range(360):x = draw_x(4, i) - 60y = draw_y(10, i) + 190goto(x, y)fillcolor("#f1add1")end_fill()pu()goto(0, 130)pd()pencolor("#b1c9e9")begin_fill()for i in range(360):x = draw_x(4, i)y = draw_y(1, i) + 130goto(x, y)goto(4, 180)for i in range(540):x = draw_x(4, i)y = draw_y(1, i) + 180goto(x, y)goto(-4, 130)fillcolor("#b1c9e9")end_fill()pencolor("white")pensize(2)for i in range(1, 6):goto(4, 130 + 10 * i)pu()goto(-4, 130 + 10 * i)pd()pu()goto(0, 180)pd()goto(0, 190)pensize(1)pu()goto(4, 200)pd()pencolor("#f1add1")begin_fill()for i in range(360):x = draw_x(4, i)y = draw_y(10, i) + 200goto(x, y)fillcolor("#f1add1")end_fill()pu()goto(30, 110)pd()pencolor("#b1c9e9")begin_fill()for i in range(360):x = draw_x(4, i) + 30y = draw_y(1, i) + 110goto(x, y)goto(34, 160)for i in range(540):x = draw_x(4, i) + 30y = draw_y(1, i) + 160goto(x, y)goto(26, 110)fillcolor("#b1c9e9")end_fill()pencolor("white")pensize(2)for i in range(1, 6):goto(34, 110 + 10 * i)pu()goto(26, 110 + 10 * i)pd()pu()goto(30, 160)pd()goto(30, 170)pensize(1)pu()goto(34, 180)pd()pencolor("#f1add1")begin_fill()for i in range(360):x = draw_x(4, i) + 30y = draw_y(10, i) + 180goto(x, y)fillcolor("#f1add1")end_fill()pu()goto(-30, 110)pd()pencolor("#b1c9e9")begin_fill()for i in range(360):x = draw_x(4, i) - 30y = draw_y(1, i) + 110goto(x, y)goto(-26, 160)for i in range(540):x = draw_x(4, i) - 30y = draw_y(1, i) + 160goto(x, y)goto(-34, 110)fillcolor("#b1c9e9")end_fill()pencolor("white")pensize(2)for i in range(1, 6):goto(-26, 110 + 10 * i)pu()goto(-34, 110 + 10 * i)pd()pu()goto(-30, 160)pd()goto(-30, 170)pensize(1)pu()goto(-26, 180)pd()pencolor("#f1add1")begin_fill()for i in range(360):x = draw_x(4, i) - 30y = draw_y(10, i) + 180goto(x, y)fillcolor("#f1add1")end_fill()

随机数点(彩点)

代码如下:

def color_range(time, x1, x2, y1, y2, r1, r2, r3, r4):colors = ["#e28cb9", "#805a8c", "#eaa989", "#6e90b7", "#b8b68f", "#e174b5", "#cf737c", "#7c8782"]for i in range(time):pu()x = random.randint(x1, x2)y = random.randint(y1, y2)goto(x, y)pd()dot(random.randint(r1, r2), colors[random.randint(r3, r4)])def ranges():color_range(80, -120, 120, -25, 30, 2, 5, 0, 7)color_range(40, -90, 90, -35, 10, 2, 5, 0, 7)color_range(40, -80, 80, 60, 90, 2, 5, 0, 7)color_range(30, -50, 50, 45, 70, 2, 5, 0, 7)color_range(50, -500, 500, 120, 300, 3, 5, 0, 7)

文字

文字是可以随意添加的,乌龟库也支持中文

def texts():seth(90)  # 逆时针90度pu()  # 用于抬起画笔 ,即使用后画笔的移动产生可见的轨迹goto(0, 0)  # 位置fd(210)  # 指沿着海龟的前方向运行left(90)fd(170)pd()write("Happy Birthday", font=("Curlz MT", 50))

小猪佩奇——画画

画出小猪佩奇的身体各个特征

def nose(x, y):# 鼻子pu()goto(x, y)pd()seth(-30)begin_fill()a = 0.4for i in range(120):if 0 <= i < 30 or 60 <= i < 90:a = a+0.08lt(3)   # 向左转3度fd(a)   # 向前走a的步长else:a = a-0.08lt(3)fd(a)end_fill()pu()seth(90)fd(25)seth(0)fd(10)pd()pencolor(255, 155, 192)seth(10)begin_fill()circle(5)color(160, 82, 45)end_fill()pu()seth(0)fd(20)pd()pencolor(255, 155, 192)seth(10)begin_fill()circle(5)color(160, 82, 45)end_fill()def head(x, y):# 头color((255, 155, 192), "pink")pu()goto(x, y)seth(0)pd()begin_fill()seth(180)circle(300, -30)circle(100, -60)circle(80, -100)circle(150, -20)circle(60, -95)seth(161)circle(-300, 15)pu()goto(-100, 100)pd()seth(-30)a=0.4for i in range(60):if 0 <= i < 30 or 60 <= i < 90:a = a+0.08lt(3)   # 向左转3度fd(a)   # 向前走a的步长else:a = a-0.08lt(3)fd(a)end_fill()def ears(x, y):# 耳朵color((255, 155, 192), "pink")pu()goto(x, y)pd()begin_fill()seth(100)circle(-50, 50)circle(-10, 120)circle(-50, 54)end_fill()pu()seth(90)fd(-12)seth(0)fd(30)pd()begin_fill()seth(100)circle(-50, 50)circle(-10, 120)circle(-50, 56)end_fill()def eyes(x, y):# 眼睛color((255, 155, 192), "white")pu()seth(90)fd(-20)seth(0)fd(-95)pd()begin_fill()circle(15)end_fill()color("black")pu()seth(90)fd(12)seth(0)fd(-3)pd()begin_fill()circle(3)end_fill()color((255, 155, 192), "white")pu()seth(90)fd(-25)seth(0)fd(40)pd()begin_fill()circle(15)end_fill()color("black")pu()seth(90)fd(12)seth(0)fd(-3)pd()begin_fill()circle(3)end_fill()def cheek(x, y):#腮color((255, 155, 192))pu()goto(x, y)pd()seth(0)begin_fill()circle(30)end_fill()def mouth(x, y):# 嘴color(239, 69, 19)pu()goto(x, y)pd()seth(-80)circle(30, 40)circle(40, 80)def body(x, y):# 身体color("red", (255, 99, 71))pu()goto(x, y)pd()begin_fill()seth(-130)circle(100, 10)circle(300, 30)seth(0)fd(230)seth(90)circle(300, 30)circle(100, 3)color((255, 155, 192), (255, 100, 100))seth(-135)circle(-80, 63)circle(-150, 24)end_fill()def hands(x, y):# 手color((255, 155, 192))pu()goto(x, y)pd()seth(-160)circle(300, 15)pu()seth(90)fd(15)seth(0)fd(0)pd()seth(-10)circle(-20, 90)pu()seth(90)fd(30)seth(0)fd(237)pd()seth(-20)circle(-300, 15)pu()seth(90)fd(20)seth(0)fd(0)pd()seth(-170)circle(20, 90)def foot(x, y):# 脚pensize(10)color((240, 128, 128))pu()goto(x, y)pd()seth(-90)fd(40)seth(-180)color("black")pensize(15)fd(20)pensize(10)color((240, 128, 128))pu()seth(90)fd(40)seth(0)fd(90)pd()seth(-90)fd(40)seth(-180)color("black")pensize(15)fd(20)def tail(x, y):# 尾巴pensize(4)color((255, 155, 192))pu()goto(x, y)pd()seth(0)circle(70, 20)circle(10, 330)circle(70, 30)

小猪佩奇的参数设置

代码如下:

def setting():# 参数设置pensize(4)hideturtle()colormode(255)color((255, 155, 192), "pink")setup(1000, 800)speed(10)def brandon():nose(-100, 100)head(-69, 167)ears(0, 160)eyes(0, 140)cheek(80, 10)mouth(-20, 30)body(-32, -8)hands(-56, -45)foot(2, -177)tail(148, -155)

效果


演示视频我上传到了B站(有可能会删除,没有也没事,有兴趣的可以拿代码去跑一跑)
视频演示——画个小猪佩奇和她的蛋糕
https://www.bilibili.com/video/BV16i4y1V7ck/

总结

Turtle库的相关使用算是程序设计的基础,对小孩子的程序学习挺有用,我也是无聊时间去研究学习学习,真的真的数学真的太重要了!!!很感谢论坛大佬们的经验!!

无聊的时间,乌龟画了一只小猪佩奇还有她的蛋糕相关推荐

  1. 用c语言编程画一只猪,如何优雅的使用C语言绘制一只小猪佩奇

    今天我们来用C语言画一只小猪佩奇---社会.社会.... 在画小猪佩奇之前,我们先使用带符号的距离长 (signed distance field,SDF) 来画一个圆形. 使用这个方法表示形状,但是 ...

  2. c语言画猪程序,C/C++知识点之如何优雅的使用C语言绘制一只小猪佩奇

    本文主要向大家介绍了C/C++知识点之如何优雅的使用C语言绘制一只小猪佩奇,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. 今天我们来用C语言画一只小猪佩奇---社会.社会.... ...

  3. 如何优雅的使用C语言绘制一只小猪佩奇

    今天我们来用C语言画一只小猪佩奇---社会.社会.... 在画小猪佩奇之前,我们先使用带符号的距离长 (signed distance field,SDF) 来画一个圆形. 使用这个方法表示形状,但是 ...

  4. 利用Python画一只小猪佩奇

    # 小朱 # 时间:2022/3/7 19:30 # coding=utf-8import turtle as tt.pensize(4) t.hideturtle() t.colormode(255 ...

  5. html css画小猪佩琪,【前端切图】用css画一个卡通形象-小猪佩奇

    最近在腾讯云技术社区遇到了一位奇才,用css画出了一个社会人小猪佩奇,不得不服.研究了一下他的文章https://segmentfault.com/a/1190000014909658,感觉甚是有趣, ...

  6. 用css画一个卡通形象-小猪佩奇

    最近在腾讯云技术社区遇到了一位奇才,用css画出了一个社会人小猪佩奇,不得不服.研究了一下他的文章https://segmentfault.com/a/1190000014909658,感觉甚是有趣, ...

  7. 用python画小动物代码_python用turtle画一只小猪佩奇,并打包为exe

    from turtle import * importtimedef nose(x, y): #鼻子 penup() #提起笔 goto(x, y) #定位 pendown() #落笔,开始画 set ...

  8. c语言画一只小猪佩奇

    /* 小猪佩奇 */ #include <math.h> #include <stdio.h> #include <stdlib.h> #define T doub ...

  9. 趣味Python之旅之画一只小猪佩奇

    这是课上老师给我们演示的代码,出处不明 据说是一位国外大佬的杰作.与大家共勉,一起探索编程(秃头)的乐趣. 先上图: 代码奉上. #!/usr/bin/env python2 # coding=utf ...

最新文章

  1. 查看JDK的历史版本
  2. WEB站点使用企业库安全性异常解决办法
  3. python的下载和安装步骤-PyCharm下载和安装详细步骤
  4. 美国25大最具价值博客网站出炉
  5. django mysql debug_部署前准备--使用Mysql之Django Debug Toolbar安装以及配置
  6. 自动化测试工具selenium使用介绍
  7. 《剑指offer》二叉树的深度
  8. SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用
  9. 如何将联系人导入Windows联系人文件夹和从中导出联系人
  10. 花花酱leetcode 题目——搜索专题
  11. C语言编程出图形,C语言画出各种图形
  12. STM32之通用定时器输出比较模式
  13. 增加字库 安卓_【Android】Android4.4添加新语言和字库
  14. java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格
  15. XML转换为dataframe
  16. 如何umount一个busy的目录?
  17. 斗鱼视频sign签名逆向分析
  18. Visual Studio快捷键大全
  19. 构建初级前端页面以及重构开发环境(from 知乎)
  20. 2021年全球自动浓缩咖啡机行业调研及趋势分析报告

热门文章

  1. React 中 useState 清理的必须性
  2. 大脑里也有个Transformer!和「海马体」机制相同
  3. php生成印章 代码片段
  4. C# 自嗨:2019年安徽省程序设计大赛题目——机器人足球
  5. TensorFlow学习笔记——车牌标志识别分类
  6. c语言运算符 amp 的意思,C++中运算符 amp;和amp;amp;、|和|| 的详解及区别
  7. 发票识别+查验API快速辨别发票真伪
  8. 四国军棋引擎开发(11)多线程搜索
  9. Oracle官网所有JDK及JRE历史版本下载地址
  10. 美图秀秀2014电脑版 v3.9.6.1003 官方最新版