turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
Posted cui_yonghua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了turtle库的几个案例进阶,代码可直接运行(python经典编程案例)相关的知识,希望对你有一定的参考价值。
1. 画出奥运五环图
代码如下:
import turtle
turtle.width(10)
turtle.color("blue")
turtle.circle(50)
turtle.color("black")
turtle.penup()
turtle.goto(120, 0)
turtle.pendown()
turtle.circle(50)
turtle.color("red")
turtle.penup()
turtle.goto(240, 0)
turtle.pendown()
turtle.circle(50)
turtle.color("yellow")
turtle.penup()
turtle.goto(60, -50)
turtle.pendown()
turtle.circle(50)
turtle.color("green")
turtle.penup()
turtle.goto(180, -50)
turtle.pendown()
turtle.circle(50)
执行结果如下图所示:
2. 定义多点坐标并计算起始点和终点距离
import turtle
import math
# 定义多个点的坐标
x1, y1 = 100, 100
x2, y2 = 100, -100
x3, y3 = -100, -100
x4, y4 = -100, 100
# 绘制折线
turtle.penup()
turtle.goto(x1, y1)
turtle.pendown()
turtle.goto(x2, y2)
turtle.goto(x3, y3)
turtle.goto(x4, y4)
# 计算起始点和终点的距离
distance = math.sqrt((x1-x4)**2 + (y1-y4)**2)
turtle.write(distance)
3. 画玫瑰
用Python 画出玫瑰图案,代码如下:
import turtle as t
# 定义一个曲线绘制函数
def DegreeCurve(n, r, d=1):
for i in range(n):
t.left(d)
t.circle(r, abs(d))
# 初始位置设定
s = 0.2 # size
t.setup(450*5*s, 750*5*s)
t.pencolor("black")
t.fillcolor("red")
t.speed(100)
t.penup()
t.goto(0, 900*s)
t.pendown()
# 绘制花朵形状
t.begin_fill()
t.circle(200*s,30)
DegreeCurve(60, 50*s)
t.circle(200*s,30)
DegreeCurve(4, 100*s)
t.circle(200*s,50)
DegreeCurve(50, 50*s)
t.circle(350*s,65)
DegreeCurve(40, 70*s)
t.circle(150*s,50)
DegreeCurve(20, 50*s, -1)
t.circle(400*s,60)
DegreeCurve(18, 50*s)
t.fd(250*s)
t.right(150)
t.circle(-500*s,12)
t.left(140)
t.circle(550*s,110)
t.left(27)
t.circle(650*s,100)
t.left(130)
t.circle(-300*s,20)
t.right(123)
t.circle(220*s,57)
t.end_fill()
# 绘制花枝形状
t.left(120)
t.fd(280*s)
t.left(115)
t.circle(300*s,33)
t.left(180)
t.circle(-300*s,33)
DegreeCurve(70, 225*s, -1)
t.circle(350*s,104)
t.left(90)
t.circle(200*s,105)
t.circle(-500*s,63)
t.penup()
t.goto(170*s,-30*s)
t.pendown()
t.left(160)
DegreeCurve(20, 2500*s)
DegreeCurve(220, 250*s, -1)
# 绘制一个绿色叶子
t.fillcolor('green')
t.penup()
t.goto(670*s,-180*s)
t.pendown()
t.right(140)
t.begin_fill()
t.circle(300*s,120)
t.left(60)
t.circle(300*s,120)
t.end_fill()
t.penup()
t.goto(180*s,-550*s)
t.pendown()
t.right(85)
t.circle(600*s,40)
# 绘制另一个绿色叶子
t.penup()
t.goto(-150*s,-1000*s)
t.pendown()
t.begin_fill()
t.rt(120)
t.circle(300*s,115)
t.left(75)
t.circle(300*s,100)
t.end_fill()
t.penup()
t.goto(430*s,-1070*s)
t.pendown()
t.right(30)
t.circle(-600*s,35)
t.done()
执行结果如下图:
4. 绘制多个同心圆
代码如下:
import turtle
t = turtle.Pen()
my_colors = ("red", "green", "yellow", "black")
t.width(4)
t.speed(1)
for i in range(10): # 0 1 2 3 4
t.penup()
t.goto(0, -i*10) # 0, -100,-200,-300,-400
t.pendown()
t.color(my_colors[i%len(my_colors)])
t.circle(15+i*10) # 100,200,300, 400,, 500
turtle.done() # 程序执行完,窗口仍然在
执行结果如下图:
5. 用Python 绘制 18*18 棋盘
import turtle
width = 30
num = 18
x1 = [(-400, 400), (-400+width*num, 400)]
y1 = [(-400, 400), (-400, 400-width*num)]
t = turtle.Pen()
t.speed(10)
for i in range(0, 19):
t.penup()
t.goto(x1[0][0], x1[0][1]-30*i)
t.pendown()
t.goto(x1[1][0], x1[1][1]-30*i)
for i in range(0, 19):
t.penup()
t.goto(y1[0][0]+30*i,y1[0][1])
t.pendown()
t.goto(y1[1][0]+30*i,y1[1][1])
t.hideturtle() # 隐藏画笔
turtle.done() # 保证运行窗口不被自动关闭
6. 画樱花
import turtle as T
import random
import time
# 画樱花的躯干(60,t)
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 8 <= branch <= 12:
if random.randint(0, 2) == 0:
t.color('snow') # 白
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 3)
elif branch < 8:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
# 掉落的花瓣
def Petal(m, t):
for i in range(m):
a = 200 - 400 * random.random()
b = 10 - 20 * random.random()
t.up()
t.forward(b)
t.left(90)
t.forward(a)
t.down()
t.color('lightcoral') # 淡珊瑚色
t.circle(1)
t.up()
t.backward(a)
t.right(90)
t.backward(b)
# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()
7. 画圣诞树
# -*- encoding: utf-8 -*-
"""
@Author: cuiyonghua
@CreateDate: 2020/12/15 8:05 下午
@File: 画圣诞树.py
@Description:
"""
import turtle # 导入绘图海龟模块
turtle.setup(500, 600) # 设置窗体大小
tree = turtle.Turtle() # 创建画笔
tree.shape('triangle') # 默认为三角形
tree.color('green') # 设置画笔颜色
tree.right(30) # 向右旋转30度
tree.up() # 抬起画笔
# 绘制树
def drawing_tree(start, stop, move, is_square=False):
if is_square: # 该参数为True说明绘制树干
tree.left(30) # 向左旋转30度
tree.shape('square') # 设置绘制物为正方形
tree.color('brown') # 设置颜色为棕色
for r in range(start, stop): # 循环遍历行的绘制物
a = r # 默认绘制树叶
if is_square: # 该参数为True说明绘制树干
a = 1 # 将a设置为1,只绘制一列图形
y = 20 * r # 计算绘制物y坐标的距离
for c in range(a): # 循环遍历列的绘制物
x = 20 * c # 计算绘制物x坐标的距离
tree.goto(x, -y + move) # 移动右半部分的位置
tree.stamp() # 复制当前图形,实现绘制
tree.goto(-x, -y + move) # 移动左半部分的位置
tree.stamp() # 复制当前图形,实现绘制
drawing_tree(1, 4, 160) # 绘制圣诞树的前三层
drawing_tree(2, 5, 120) # 绘制圣诞树的中间三层
drawing_tree(3, 6, 80) # 绘制圣诞树的最后三层
drawing_tree(4, 9, 40, True) # 绘制圣诞树的树干
import time # 导入时间模块
word = turtle.Turtle() # 创建绘制文字的画笔对象
word.up() # 抬起画笔
word.goto(-150, 200) # 移动到顶部位置
word.color('red') # 设置画笔颜色为红色
# 写入文字“圣”
word.write("圣", font=(u"黑体", 48, "normal"), align="center")
time.sleep(0.5) # 等待指定时间
word.goto(-50, 200) # 画笔移动至第二个字的位置
# 写入文字“诞”
word.write(arg="诞", move=True, font=(u"黑体", 48, "normal"), align="center")
time.sleep(0.5) # 等待指定时间
word.goto(50, 200) # 画笔移动至第三个字的位置
# 写入文字“快”
word.write("快", font=(u"黑体", 48, "normal"), align="center")
time.sleep(0.5) # 等待指定时间
word.goto(150, 200) # 画笔移动至第四个字的位置
# 写入文字“乐”
word.write("乐", font=(u"黑体", 48, "normal"), align="center")
word.hideturtle() # 隐藏箭头
turtle.mainloop() # 开始循环防止窗口自动关闭
8. 动态时钟
# -*- encoding: utf-8 -*-
"""
@Author: cuiyonghua
@CreateDate: 2020/12/15 7:56 下午
@File: 动态时钟.py
@Description:
"""
'''
动态时钟
'''
import turtle
import datetime
# 移动一段距离
def skip(distance): # 移动方法,不留移动痕迹
turtle.penup() # 抬笔不绘制
turtle.forward(distance) # 移动指定距离
turtle.pendown() # 落笔移动绘制
def draw_clock_dial(): # 绘制表盘的方法
turtle.reset() # 删除图形归位
turtle.hideturtle(以上是关于turtle库的几个案例进阶,代码可直接运行(python经典编程案例)的主要内容,如果未能解决你的问题,请参考以下文章
turtle库的几个简单案例,代码可直接运行(python经典编程案例)
turtle库的几个简单案例,代码可直接运行(python经典编程案例)
python-turtle绘制雪容融,已打包成exe可直接运行