作者:看那个码农
公众号:看那个码农
1.项目简介
Turtle库是Python中一个很流行的绘图函数库,主要是依据坐标轴来绘制图像,画笔则是一只小海龟,通过控制海龟的在坐标平面的移动,从而绘制各种各样的图像。
之前有段时间被称为“社会人”的小猪佩奇,算是火遍了大江南北,成为了家喻户晓的名“人”。
本篇文章就利用Turtle库学习怎么样画小猪佩奇
2.项目用途
学习利用turtle制作很多复杂的绘图。
3.项目配置
- Pythom3.x
- turtle(Python自带这个库)
4.项目流程
1.设置画布大小
画布就是turtle为我们展开用于绘图的区域,如下图所示白板
我们可以设置它的大小和初始位置
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
#参数分别为画布的宽(单位像素), 高, 背景颜色
或者是用
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
#width, height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
#startx, starty:这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心
画布大小设置好之后,我们再设置画笔属性就可以开始画画了
2.设置画笔属性
画笔的宽度,颜色、画笔的移动速度
turtle.pensize() #设置画笔的宽度;
turtle.pencolor() #没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,
#可以是字符串如"green", "red",也可以是RGB 3元组
turtle.speed(speed) #设置画笔移动速度,画笔绘制的速度范围[0,10]整数, 数字越大越快
绘图画笔命令
下面列举几个画画中所涉及的重要函数
就如同现实中画画常用的圆圈,线条,椭圆等图形
以及图形内部的颜色填充
turtle.setheading() #选择绘制方向(0-东、90-北、180-西、270-南)
turtle.goto() #定位坐标
turtle.penup() #提起笔
turtle.pendown() #放下笔
turtle.fd() #向前绘画
turtle.color() #画笔颜色
turtle.fillcolor() #填充颜色
turtle.circle() #画圆
3.完整代码
from turtle import*
def nose(x,y): # 鼻子
penup() # 提起笔
goto(x,y) # 定位
pendown() # 落笔,开始画
setheading(-30) # 将乌龟的方向设置为to_angle/为数字(0-东、90-北、180-西、270-南)
begin_fill() # 准备开始填充图形
a=0.4
for i in range(120):
if 0<=i<30 or 60<=i<90:
a += 0.08
left(3) # 向左转3度
fd(a) # 向前走a的步长
else:
a -= 0.08
left(3)
fd(a)
end_fill() # 填充完成
penup()
goto(-90,125)
pendown()
color(255,155,192) # 画笔颜色
setheading(10)
begin_fill()
circle(5)
color(160,82,45)
end_fill()
penup()
setheading(0)
goto(-70,125)
pendown()
color(255,155,192)
setheading(10)
begin_fill()
circle(5)
color(160,82,45)
end_fill()
def head(x,y):#头
color((255,155,192),"pink")
penup()
goto(x,y)
setheading(0)
pendown()
begin_fill()
setheading(180)
circle(300,-30)
circle(100,-60)
circle(80,-100)
circle(150,-20)
circle(60,-95)
setheading(161)
circle(-300,15)
penup()
goto(-100,100)
pendown()
setheading(-30)
a=0.4
for i in range(60):
if 0<=i<30 or 60<=i<90:
a += 0.08
lt(3) # 向左转3度
fd(a) # 向前走a的步长
else:
a=a-0.08
lt(3)
fd(a)
end_fill()
def ears(x, y): # 耳朵
color((255, 155, 192), "pink")
penup()
goto(x,y)
pendown()
begin_fill()
setheading(100)
circle(-50, 50)
circle(-10, 120)
circle(-50, 54)
end_fill()
penup()
setheading(90)
fd(-12)
setheading(0)
fd(30)
pendown()
begin_fill()
setheading(100)
circle(-50, 50)
circle(-10, 120)
circle(-50, 56)
end_fill()
def eyes(x,y): # 眼睛
color((255, 155, 192), "white")
penup()
setheading(90)
fd(-20)
setheading(0)
fd(-95)
pendown()
begin_fill()
circle(15)
end_fill()
color("black")
penup()
setheading(90)
fd(12)
setheading(0)
fd(-3)
pendown()
begin_fill()
circle(3)
end_fill()
color((255, 155, 192), "white")
penup()
setheading(90)
fd(-25)
setheading(0)
fd(40)
pendown()
begin_fill()
circle(15)
end_fill()
color("black")
penup()
setheading(90)
fd(12)
setheading(0)
fd(-3)
pendown()
begin_fill()
circle(3)
end_fill()
def cheek(x,y): # 腮
color((255,155,192))
penup()
goto(x,y)
pendown()
setheading(0)
begin_fill()
circle(30)
end_fill()
def mouth(x,y): #嘴
color(239,69,19)
penup()
goto(x,y)
pendown()
setheading(-80)
circle(30,40)
circle(40,80)
def body(x,y): # 身体
color("red", (255, 99, 71))
penup()
goto(x,y)
pendown()
begin_fill()
setheading(-130)
circle(100, 10)
circle(300, 30)
setheading(0)
fd(230)
setheading(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))
penup()
goto(x,y)
pendown()
setheading(-160)
circle(300, 15)
penup()
setheading(90)
fd(15)
setheading(0)
fd(0)
pendown()
setheading(-10)
circle(-20, 90)
penup()
setheading(90)
fd(30)
setheading(0)
fd(237)
pendown()
setheading(-20)
circle(-300, 15)
penup()
setheading(90)
fd(20)
setheading(0)
fd(0)
pendown()
setheading(-170)
circle(20, 90)
def foot(x,y): # 脚
pensize(10)
color((240, 128, 128))
penup()
goto(x,y)
pendown()
setheading(-90)
fd(40)
setheading(-180)
color("black")
pensize(15)
fd(20)
pensize(10)
color((240, 128, 128))
penup()
setheading(90)
fd(40)
setheading(0)
fd(90)
pendown()
setheading(-90)
fd(40)
setheading(-180)
color("black")
pensize(15)
fd(20)
def tail(x,y): # 尾巴
pensize(4)
color((255, 155, 192))
penup()
goto(x,y)
pendown()
setheading(0)
circle(70, 20)
circle(10, 330)
circle(70, 30)
def setting(): #参数设置
pensize(4)
hideturtle() #使乌龟无形(隐藏)
colormode(255) #将其设置为1.0或255.随后 颜色三元组的r,g,b值必须在0 .. cmode范围内
color((255,155,192),"pink")
setup(840,500)
speed(10)
def main():
setting() # 画布、画笔设置
nose(-100,100) # 鼻子
head(-69,167) # 头
ears(6,157) # 耳朵
eyes(-15,110) # 眼睛
cheek(80,10) # 腮
mouth(-20,30) # 嘴
body(-30,-9) # 身体
hands(-54,-47) # 手
foot(3,-178) # 脚
tail(150,-136) # 尾巴
done()
if __name__ == '__main__':
main()
5.项目思考
Python学起来确实很有趣,特别像这样子的案例也有很多,通过一些简单的案例让初级开发者逐步掌握Python,不失为一个好方式。
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情