用户:
熊熊糖果查看:8 回复:5 评论:8 创建时间:2020-03-14T09:18:08
Python画喵队长盾牌
打开桌面上的Python,新建一个文件,用自己的名字做文件名保存在桌面上
在开始写代码之前,我们先来看看喵队长盾牌是由哪几部分组成的
通过图可以看出,画图的步骤应该是:
外面的红圈→中间的灰圈→里面的红圈→里面的蓝圈→白色五角星
这里有一点需要注意,因为Python画图是有先后顺序的,也就是后画的图形会覆盖掉先画的图形,所以我们一定要看好画图的顺序。
这节课,我们主要讲颜色的填充。
要想画出一个完整的图形,就需要在轮廓线内部填充颜色,而不是只有轮廓的线条图形。
那颜色该怎么填充呢?
其实很简单。
开始填充:begin_fill()
begin是“开始”的意思
fill是“填充”的意思
这条指令就是“开始填充”,也就是设置填充的起点
结束填充:end_fill()
end是“结束”的意思
这条指令就是“结束填充”,也就是设置填充的终点
在执行了这条指令之后,画布上就会显示出填充完成的图形。
(图片来源于编程猫源码图鉴)
实现代码
import turtle
t=turtle.Turtle()
t.fillcolor("#cc66cc") #设置填充色 t.begin_fill() #设置为填充起点
t.circle(50) #绘制一个圆
t.end_fill() #设置为填充终点 在开始创作之前,我们需要先分析一下这些图形的坐标
首先,我们先来分析一下最外面的红圈的坐标。
可以看出,这个红圈的中心位置一定是在舞台坐标(0,0)的位置上,而Python画圆是在图形的正下方边缘的位置,推荐使用半径是300的圆,x坐标肯定是0,是因为它在舞台的中间。所以,我们可以得出结论,画这个图形时,画笔在舞台上的坐标位置是(0,-300)。
接下来其他的圈的大小可以依次使用250、200、150,坐标可以根据上面的方法算出来,这里我就不多说了。
需要注意的是,在画灰色的圈的时候,如果直接用灰色(gray)颜色会太深,所以这里推荐使用银色(silver)。
大家也知道,后画的图形会覆盖在先画的图形上,所以我们按照顺序依次画就可以了。
五角星怎么画?它的坐标在哪里?应该用什么大小?
这些问题困惑着许多同学,其实画五角星很简单,我们可以分析一下画五角星的步骤:
向前移动→右转144度→向前移动→右转144度→向前移动→右转144度→向前移动→右转144度→向前移动→右转144度
通过这个步骤可以清晰地看出,画五角星的方法就是:
重复执行5次→向前移动—右转144度←
五角星的画法如图所示
我们可以先定义一个画五角星的函数方便调用
这里的n就是画的五角星的大小
拓展:
fd就是forward(前进)的缩写
bk就是backward(后退)的缩写
rt就是right(右转)的缩写
lt就是left(左转)的缩写
需要注意
用了这个画图的方法后,你知道画五角星的起点和图形是在什么位置的吗?
画图坐标
用了这个画图的方法后,你知道画五角星的起点和图形是在什么坐标的吗?
你知道是什么大小吗?
通过计算得来,五角星的位置应该是(-137.5,45)
大小应该是275
①
你有没有觉得画出图形后画布上有一个小小的三角形(画笔)不好看呢?其实是可以解决的:
t.ht()
或
t.hideturtle()
就是隐藏画笔。
②
你试过直接从桌面双击打开Python文件吗?
如果你试过,你一定会发现,图形画完了之后就会自动关闭,没时间来欣赏,那这该怎么办呢?
也很简单,在画图形代码末尾加上一个:
t.done()
可以保持画布不被关闭
觉得我的教程帖怎么样呢?欢迎在评论区发表你的看法。 本人原创的哦
熊熊糖果作品整体源代码在这里哦~
import turtle as t
t.speed(0)
def move(x,y):
t.up()
t.goto(x,y)
t.down()
def star(n):
for x in range(5):
t.fd(n)
t.rt(144)
#外红圈
t.color('red')
move(0,-300)
t.begin_fill()
t.circle(300)
t.end_fill()
#灰圈
t.color('silver')
move(0,-250)
t.begin_fill()
t.circle(250)
t.end_fill()
#内红圈
t.color('red')
move(0,-200)
t.begin_fill()
t.circle(200)
t.end_fill()
#内蓝圈
t.color('blue')
move(0,-150)
t.begin_fill()
t.circle(150)
t.end_fill()
#五角星
t.color('white')
move(-137.5,45)
t.begin_fill()
star(275)
t.end_fill()
#隐藏画笔
t.ht()
#保持画布
t.done()
点赞0
评论