赞
踩
海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
turtle 模块提供面向对象和面向过程两种形式的海龟绘图基本组件。由于它使用 tkinter 实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。
如果屏幕上需要有多个海龟,就必须使用面向对象的接口。
命令 | 说明 |
---|---|
forward() 、 fd() | 前进 |
backward() 、 bk() 、 back() | 后退 |
right() 、 rt() | 右转 |
left() 、 lt() | 左转 |
goto() 、 setpos() 、 setposition() | 前往/定位 |
setx() | 设置x坐标 |
sety() | 设置y坐标 |
setheading()、 seth() | 设置朝向 |
home() | 返回原点 |
circle() | 画圆 |
dot() | 画点 |
stamp() | 印章 |
clearstamp() | 清除印章 |
clearstamps() | 清除多个印章 |
undo() | 撤消 |
speed() | 速度 |
命令 | 说明 |
---|---|
position() 、 pos() | 位置 |
towards() | 目标方向 |
xcor() | x坐标 |
ycor() | y坐标 |
heading() | 朝向 |
distance() | 距离 |
命令 | 说明 |
---|---|
pendown() 、 pd() 、 down() | 画笔落下 |
penup() 、 pu() 、 up() | 画笔抬起 |
pensize() 、 width() | 画笔粗细 |
pen() | 画笔 |
isdown() | 画笔是否落下 |
命令 | 说明 |
---|---|
color() | 颜色 |
pencolor() | 画笔颜色 |
fillcolor() | 填充颜色 |
命令 | 说明 |
---|---|
filling() | 是否填充 |
begin_fill() | 开始填充 |
end_fill() | 结束填充 |
命令 | 说明 |
---|---|
reset() | 重置 |
clear() | 清空 |
write() | 书写 |
命令 | 说明 |
---|---|
bgcolor() | 背景颜色 |
bgpic() | 背景图片 |
clearscreen() | 清空 |
resetscreen() | 重置 |
screensize() | 屏幕大小 |
setworldcoordinates() | 设置世界坐标系 |
命令 | 说明 |
---|---|
listen() 监听 | |
onkey() 、onkeyrelease() | 当键盘按下并释放 |
onkeypress() | 当键盘按下 |
onclick() 、 onscreenclick() | 当点击屏幕 |
ontimer() | 当达到定时 |
mainloop() 、 done() | 主循环 |
命令 | 说明 |
---|---|
bye() | 退出 |
exitonclick() | 当点击时退出 |
setup() | 设置 |
title() | 标题 |
from turtle import *
title('turtle绘图 - 爱看书的小沐')
color('red', 'yellow')
speed(10)
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
或
import turtle as t
# import time
t.color("red", "yellow")
t.speed(10)
t.begin_fill()
for _ in range(50):
t.forward(200)
t.left(170)
t.end_fill()
# time.sleep(1)
t.done()
# -*- coding: utf-8 -*-
import turtle
toplevel = 8 # 一共递归8层
angle = 30
rangle = 15
def drawTree(length, level):
turtle.left(angle) # 绘制左枝
turtle.color("black")
turtle.forward(length)
if level == toplevel: # 叶子
turtle.color("pink")
turtle.circle(2, 360)
if level < toplevel: # 在左枝退回去之前递归
drawTree(length - 10, level + 1)
turtle.back(length)
turtle.right(angle + rangle) # 绘制右枝
turtle.color("black")
turtle.forward(length)
if level == toplevel: # 叶子
turtle.color("pink")
turtle.circle(2, 360)
if level < toplevel: # 在右枝退回去之前递归
drawTree(length - 10, level + 1)
turtle.color("black")
turtle.back(length)
turtle.left(rangle)
def writePoem():
turtle.color("blue")
turtle.penup()
turtle.goto(150, -120)
turtle.write('碧玉妆成一树高,',font=("隶书", 15))
turtle.goto(150, -140)
turtle.write('万条垂下绿丝绦。',font=("隶书", 15))
turtle.goto(150, -160)
turtle.write('不知细叶谁裁出,',font=("隶书", 15))
turtle.goto(150, -180)
turtle.write('二月春风似剪刀。',font=("隶书", 15))
turtle.hideturtle()
turtle.left(90)
turtle.penup()
turtle.back(300)
turtle.pendown()
turtle.forward(100)
# turtle.speed('fastest')
turtle.speed(11)
# drawTree(80, 1)
drawTree(80, 1)
writePoem()
turtle.done()
from turtle import *
from random import randrange,choice
balloons=[] #气球队列
color_option=["red","blue","green","purple","pink","yellow","orange","black"] #颜色队列
size=50 #气球大小
def line(x,y,a,b,line_width=1,color_name="black"): #默认气球线宽度为1,颜色为黑
up()
goto(x,y)
down()
color(color_name)
width(line_width)
goto(a,b)
def distance(x,y,a,b):
return ((a-x)**2+(b-y)**2)**0.5 #根据勾股定理,判断鼠标点击位置和气球坐标的距离
def tap(x,y):
for i in range(len(balloons)):
if distance(x,y,balloons[i][0],balloons[i][1])<(size/2): #判断是否点击气球队列中的其中一个
balloons.pop(i) #删除这个气球
return #返回,因为只能同时点击一个气球
def draw():
clear() #清除画布
for i in range(1,(len(balloons)+1)): #生成下标从1开始,以下-i表示画气球时倒着画,从最后一个画到最前边
line(balloons[-i][0],balloons[-i][1],balloons[-i][0],balloons[-i][1]-size*1.5,1)
up() #把小乌龟从画布上拿下来,悬在空中
goto(balloons[-i][0],balloons[-i][1]) #去气球坐标这个位置
dot(size,balloons[-i][2]) #画原点,参数为大小和颜色
balloons[-i][1]=balloons[-i][1]+1 #改变纵坐标,模仿气球上升
update() #修改画布
def gameLoop():
if randrange(0,50)==1: #1/50的概率生成一个气球
x=randrange(-200+size,200-size) #气球坐标,在边框位置减去气球大小
c=choice(color_option) #随机在颜色队列选择一个颜色
balloons.append([x,-200-size,c]) #添加气球队列
draw()
ontimer(gameLoop,10) #每20毫秒循环一次
if __name__ == "__main__":
setup(600, 350, 0, 0) #画布大小为420*420,一开始坐标为(0,0)
bgpic(r'C:\Users\tomcat\desktop\20220919041856.png')
hideturtle() #隐藏小乌龟
tracer(False) #隐藏绘制过程
listen()
onscreenclick(tap) #如果单机,调用tap方法
gameLoop()
done() #结束函数,画布停留
turtledemo 包汇集了一组演示脚本。这些脚本可以通过以下命令打开所提供的演示查看器运行和查看:
python -m turtledemo
# or
python -m turtledemo.bytedesign
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地
//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。