22 net turtle绘图

海龟绘图

#召唤海龟先生,给它起个外号t
import turtle as t

#画一个圆
t.circle(100)

想绘制多个圆形

将t.circle(100)复制多次得到什么结果?
是否能改变海龟先生头的方向?

import turtle as t

t.left(90) #海龟先生 “向左转!”
t.right(90) #海龟先生 “向右转!”

通过t.left()和t.right来改变海龟先生头的方向
连续4次改变海龟先生头的方向,再转圈

import turtle as t

t.circle(100)
t.left(90)

t.circle(100)
t.left(90)

t.circle(100)
t.left(90)

t.circle(100)
t.left(90)

如果让海龟先生每次多转一度会怎么样?

import turtle as t

#循环语句
for i in range(12):
	t.left(91)
	t.circle(100)

继续改变圆的半径呢?

import turtle as t
#调整速度,0最快
t.speed(0)
#颜色
t.color('red')
for i in range(100):
	t.left(105)
	t.circle(2*i)

奥运五环

1.环是有粗细的,意味着需要改变画笔的粗细
2.环在画面的不同位置,意味着需要让海龟先生移动

import turtle as t
t.speed(0)
t.pensize(9)
t.color('black')
t.circle(75)

t.penup() #抬笔
t.goto(-165,0) #移动位置
t.pendown() #落笔

t.color('blue')
t.circle(75)

t.penup() #抬笔
t.goto(165,0) #移动位置
t.pendown() #落笔

t.color('red')
t.circle(75)

t.penup() #抬笔
t.goto(80,-100) #移动位置
t.pendown() #落笔

t.color('green')
t.circle(75)

t.penup() #抬笔
t.goto(-80,-100) #移动位置
t.pendown() #落笔

t.color('yellow')
t.circle(75)

#写字
t.penup() #抬笔
t.goto(-100,180) #移动位置
t.pendown() #落笔

t.color('black')
t.write('北京 2024',font=('YouYuan',32))

# 让画布停留,直到用户点击窗口
t.done() # 或者使用 t.exitonclick()

执行结果
在这里插入图片描述

美国队长盾牌

我们先来看一下这盾牌是长啥样的:
我们可以看到,这玩意就是由四个圆和一个五角星构成的,四个圆大小不一,五角星在正中间;实际生活中画画,肯定是先画轮廓,然后再填充颜色,但是这里我们不是的,我们画一个填充一个,一层一层覆盖上去:
在这里插入图片描述

第一步 画出红色的圆圈

# 导入turtle模块,并将其别名为t以便简化后续调用
import turtle as t
# 设置turtle绘图速度为最快
t.speed(0)
# 提起画笔,移动到指定位置而不绘制
t.penup()
# 移动到坐标(0, -200)
t.goto(0, -200)
# 放下画笔,开始绘制
t.pendown()
# 设置画笔颜色为红色
t.color('red')
# 开始填充颜色
t.begin_fill()
# 画一个半径为200的圆
t.circle(200)
# 结束填充颜色
t.end_fill()

第二步 叠加白色圆(半径缩小)

# 同样的逻辑,画一个半径为150的白色圆
t.penup()
t.goto(0, -150)
t.pendown()
t.color('white')
t.begin_fill()
t.circle(150)
t.end_fill()

第三步 叠加红色圈(半径再次缩小)

# 画一个半径为100的红色圆
t.penup()
t.goto(0, -100)
t.pendown()
t.color('red')
t.begin_fill()
t.circle(100)
t.end_fill()

第四步 叠加蓝色圈

# 画一个半径为50的蓝色圆
t.penup()
t.goto(0, -50)
t.pendown()
t.color('blue')
t.begin_fill()
t.circle(50)
t.end_fill()

封装
这样的代码太冗余了,聪明的同学应该早就封装方法,到时候我们只需要告诉它参数就好了:

def circle(x,y,r,color):
    t.goto(x,y)
    t.color(color,color)
    t.begin_fill()
    t.circle(r)
    t.end_fill()
circle(0,-200,200,'red')
circle(0,-150,150,'white')
circle(0,-100,100,'red')
circle(0,-50,50,'blue')

第五步 绘制白色的五角星
现在我们已经把四个圆画好了,就差点亮小星星了,先别急,turtle中可没有直接绘制星形的方法哦!我们不妨回忆一下,我们生活中绘制五角星是怎么画的:
在这里插入图片描述没错,其实就是五条线闭合起来就是五角星了,这里的难点是,五角星的每个角应该是多少度呢?
在这里插入图片描述
我们一步一步来看,首先五角星的正中间是个正五边形,那么每个角的度数就是(180*3/5=)108度,那么平角是180度,就可以得出相邻角是72度,等腰三角形底角相同,就可以得出五角星的每个角应该就是36度啦。

那么,现在我们已经知道角度了,我们就可以来画五角星了:
但是怎么旋转画笔呢?用turtle.right(角度)就可以了,这个方法的实际意思是顺时针旋转画笔。

# 画一个五边形,作为星星的一个角
t.penup()
t.goto(-45, 15)
t.pendown()
t.color('white')
t.begin_fill()
for i in range(5):
    t.forward(90)  # 向前绘制90单位长度
    t.right(144)   # 右转144度
t.end_fill()

# 隐藏turtle,使得只显示绘制图形
t.hideturtle()
# 结束turtle的绘制过程,图形窗口保持打开状态直到用户关闭
t.done()

执行结果
在这里插入图片描述

完整代码

# 导入turtle模块,并将其别名为t以便简化后续调用
import turtle as t

# 设置turtle绘图速度为最快
t.speed(0)

#封装
def circle(x,y,r,color):
    t.goto(x,y)
    t.color(color,color)
    t.begin_fill()
    t.circle(r)
    t.end_fill()
circle(0,-200,200,'red')
circle(0,-150,150,'white')
circle(0,-100,100,'red')
circle(0,-50,50,'blue')

# 画一个五边形,作为星星的一个角
t.penup()
t.goto(-45, 15)
t.pendown()
t.color('white')
t.begin_fill()
for i in range(5):
    t.forward(90)  # 向前绘制80单位长度
    t.right(144)   # 右转144度
t.end_fill()

# 隐藏turtle,使得只显示绘制图形
t.hideturtle()
# 结束turtle的绘制过程,图形窗口保持打开状态直到用户关闭
t.done()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值