参考
turtle — Turtle graphics — Python 3.12.1 documentation(官方教程)
(这把子没找到视频啥的)
绘制正方形
# 绘制正方形
import turtle
turtle.Screen()
# 设置线条(笔)的颜色
turtle.colormode(255) # 设置颜色模式为全局 RGB: 0-255
list_pencolor = [(1,3,34), (2,5,50),(10,34,88),(26,99,150)]
# 设置填充颜色
turtle.fillcolor('pink')
turtle.begin_fill() # 开始填充颜色
# 使用循环绘制正方形的边(4个边的颜色不一样)
for i in range(4):
turtle.pencolor(list_pencolor[i])
turtle.forward(50)
turtle.left(90)
# 结束颜色填充
turtle.end_fill()
turtle.done()
绘制学号
import turtle
class TurtleNum:
def __init__(self,xh, edge_size=50,distance=25):
self.edge_size = edge_size
self.xh = xh
self.distance = distance
def beforenum(self, loc):
"""
默认在所画数字的底角,并且方向指向右
"""
turtle.goto(loc)
turtle.setheading(0) # 默认朝向东
# turtle.forward(self.forward_distance)
def plotzero(self, loc):
turtle.penup()
self.beforenum(loc)
turtle.pendown()
list_distance = [self.edge_size, self.edge_size * 2]
for i in range(4):
turtle.forward(list_distance[i % 2])
turtle.left(90) # 绘制长方形,向左旋转90°
# 结束跳转到该数字的右下角
turtle.penup()
(x,y) = turtle.pos() # 返回当前的位置
turtle.goto(x+self.edge_size,y)
def plotone(self, loc):
turtle.penup()
self.beforenum(loc)
# 绘制数字1
default_size = 10
turtle.left(90) # 朝向上
turtle.pendown()
turtle.forward(self.edge_size * 2)
turtle.penup()
# 返回右下角
pos = turtle.pos()
turtle.goto(pos[0],pos[1]-2*self.edge_size)
def plottwo(self,loc):
self.beforenum((loc[0]+self.edge_size,loc[1])) # 2需要移到右下方点
# 移动小海龟位置到右下角,方便一笔画
turtle.left(180) # 调转方向
turtle.pendown()
list_angle = [-90, -90, 90, 90,90]
for i in range(5):
turtle.forward(self.edge_size)
turtle.left(list_angle[i])
turtle.penup()
(x,y) = turtle.pos()
turtle.goto(x+self.edge_size,y-2*self.edge_size)
def plotfive(self,loc):
# 先准备好光标位置+方向
turtle.penup()
self.beforenum(loc)
list_angle = [90,90,-90,-90,0]
# 开始画图
turtle.pendown()
for i in range(5):
turtle.forward(self.edge_size)
turtle.left(list_angle[i])
# 绘制完成以后光标回到右下角
turtle.penup()
pos = turtle.pos()
turtle.goto((pos[0],pos[1]-2*self.edge_size))
def plotsix(self,loc):
# 初始位置在左下角,需要移动到6的中间的左边点
turtle.penup()
self.beforenum((loc[0],loc[1]+self.edge_size))
# 设置角度
list_angle = [-90,-90,-90,0,-90,0]
# 开始画图
turtle.pendown()
for i in range(6):
turtle.forward(self.edge_size)
turtle.left(list_angle[i])
# 光标归位至右下角
turtle.penup()
pos = turtle.pos()
turtle.goto((pos[0],pos[1]-2*self.edge_size))
def main(self):
for i in self.xh:
pos = turtle.pos()
pos_ = (pos[0]+self.distance,pos[1])
if i == "0":
self.plotzero(pos_)
elif i == "1":
self.plotone(pos_)
elif i == "2":
self.plottwo(pos_)
elif i == "5":
self.plotfive(pos_)
elif i == "6":
self.plotsix(pos_)
input_str = "10522"
turtle.Screen()
my_xh = TurtleNum(input_str)
my_xh.main()