家里蹲太孤单?用 Python 画一只单身狗 | 原力计划
Python Turtle 快速入门
Python的Turtle库可以画图,搞出许多有趣的可视化东西,是培养女朋友儿童编程兴趣的好帮手。
Turtle顾名思义,是一只小海龟。它根据函数指令的控制,在平面坐标系中移动,可以前行、后退、转弯、瞬移、原地画点……落笔时,它爬行留下指定颜色和粗细的路径;无论抬笔还是落笔时都可以圈地填色,画出有或无边界的平面图案。所谓海龟,其实就像机器人手中的画笔。只不过这个机器人走得非常精确,不需要PID。
1、画布与画笔设置
默认原点(0,0)在正中间,画笔向东(0°方向)移动。
我们知道py文件的第一行一般是:
home():将画笔置于(0,0)点向东状态
clear():清空turtle窗口,不改变画笔位置
reset():清空窗口,回复画笔起始位置
hideturtle():隐藏画笔的turtle形状
showturtle():显示画笔的turtle形状,默认状态是与画笔同色的箭头
screensize(canvwidth,canvheight,bg):参数分别为画布的宽,高,背景颜色。
setup(width,height,startx,starty):参数宽和高为整数时表示像素;为小数时,表示占据电脑屏幕的比例,startx和starty表示矩形窗口左上角顶点的位置,如果为空则窗口位于屏幕中心
pensize(size):设置画笔粗细
seth(degree):设置画笔方向,参数取值0~360 speed(speed):设置画笔移动速度,参数取值1~10的整数
color(color)和fillcolor(color):设置笔触颜色/填充颜色,参数可以是RGB三元组或字符串。字符串对应色卡如图:
(直男朋友们注意一下,目测这里就有至少20种口红色号)
2、 运动命令
fd(d):向前移动距离d
bd(d):向后移动距离d
right(degree):画笔方向向右转动degree度
left(degree):画笔方向向左转动degree度
goto(x,y):将画笔移动到(x,y)位置
stamp():绘制当前图形
undo():撤销上一动作
3、画笔控制
pd():画笔落下,移动时绘制图形
pu():画笔抬起,移动时不绘制图形
dot(diameter,color):以画笔位置为中心绘制一个指定直径和颜色的圆,不改变画笔位置
circle(radius,degree):绘制度数为degree的圆弧,规律如下图,可见半径和度数均可取正负值:
circle(radius,degree,step)与上条类似,将这条“圆弧”分段折线化,均匀分成step段。结束时,画笔方向为“圆弧”的切线。例如先分5段画半圆再沿画笔方向前进:
4、插入文字
write函数,三个参数分别为内容、对齐方式和渲染格式。使用样例如下,为了明确align参数的定义方式,绘制圆点指明:
dot(20)
write("EESAST the best!", align="right", font=("华文隶书",20,"bold")) #右端对齐
goto(100,50)
dot(20)
write("I love THUEE!", align="left", font=("Tempus Sans ITC",20,"bold")) #左端对齐
画一只单身狗
1.FACE
从(0,0)开始,用朴素的方法,连接线段和90°圆弧绘制单身狗的脸(直男配色,直观体验)
pd() #落笔
fd(25)
#从起始状态(0,0)向东前行25像素
circle(100,90)
#画一个半径100的1/4圆弧(图中绿色)
circle(120,90)
#再画一个半径120的1/4圆弧(图中蓝色)
fd(10)
#前行10像素(图中粉色)
circle(120,90)
circle(100,90)
fd(25)
pu() #抬笔
goto(x,y)到达合适的位置,和画脸一样绘制眼眶。画眼球的时候可以dot画点,也可以按如下方式填充圆形:
goto(60,100)
begin_fill() #开始填充
circle(17) #眼球的轮廓
#如果不是闭合曲线,会连接首尾涂色
end_fill() #结束填充
3.FINISH
类似地,通过计算(调参),画另一只眼睛,接着画嘴巴和耳朵,一只单身狗就画好啦!
送你一颗小心心
阅读完上面的内容,你应该轻松地学会了一个技能,下一步就是用来装X撩弟撩妹了。送大家一颗调好参数的小心心。还是拼接圆弧,毕竟小编太懒了。
#这一行可以改,是小心心的大小参数
pu()
goto(0,-100)
#这一行可以改,是小心心的起始位置
pd()
# 如果删掉这一行不落笔,就是没有边框的小心心
begin_fill()
seth(150)
fd(size)
circle(-3.74*size, 45)
circle(-1.43*size, 165)
left(120)
circle(-1.43*size, 165)
circle(-3.74*size, 45)
fd(size)
end_fill()
原文链接:
https://blog.csdn.net/THU_COCO/article/details/104531684
声明:本文系CSDN博主原创文章,版权归作者所有。
《原力计划【第二季】- 学习力挑战》
正式开始
即日起至 3月21日
千万流量支持原创作者
更有专属【勋章】等你来挑战
在中国企业与「远程办公」正面相遇满月之际,2月29日CSDN 联合广大「远程办公」工具服务企业共同举办【抗击疫情,科技公司在行动】系列之【远程办公】专题线上峰会活动:中国「远程办公」大考。
扫下方二维码或点击阅读原文免费报名直播+抽取奖品+与大牛交流
想提前了解峰会详情,可加小助手微信csdnai,回复“远程办公”进直播群
热 文 推 荐
☞疫情之下,我们欠阿里华为腾讯一个热搜
☞在家办公憋疯了?不,我还能再待一年!
☞探索处理数据的新方法,8 个重点带你搞懂云数据库——DBaaS(数据库即服务)到底是什么!
☞微盟创始人孙涛勇回应员工删库;字节跳动推“头条搜索”独立 App;C++ 20 规范完成| 极客头条
☞基于区块链技术的数据共享赋能AI驱动网络
☞先马后看!详解线性回归、朴素贝叶斯、随机森林在R和Python中的实现应用!(附代码)
猛戳“阅读原文”,即可参加上述活动