图案一:
import turtle
turtle.pensize(2)
turtle.bgcolor("black")
colors = ["purple","red","blue","yellow"]
#一次性画好
turtle.tracer(True)
for x in range(400):
turtle.forward(2*x)
turtle.color(colors[x % 4])
turtle.left(172+(x % 4))
turtle.done()
图案二:
import turtle
turtle.pensize(2)
turtle.bgcolor("black")
colors = ["purple","red","blue","yellow"]
#一次性画好
turtle.tracer(False)
for x in range(400):
turtle.forward(2*x)
turtle.color(colors[x % 4])
turtle.left(38)
turtle.done()
图案三:
import turtle
#一次性画好,0=False
turtle.tracer(0)
#背景颜色设置
turtle.bgcolor("black")
def draw_pic(x):
for i in range(1, x + 1):
turtle.left(5)
turtle.width(3)
turtle.color("orange")
turtle.forward(200)
turtle.right(60)
turtle.color("red")
turtle.forward(100)
turtle.right(60)
turtle.color("green")
turtle.forward(200)
turtle.right(60)
turtle.color("purple")
turtle.forward(100)
turtle.ht()
draw_pic(100)
turtle.done()
图案四:import turtle
#一次性画好,0=False
turtle.tracer(0) #注释掉可以观看过程
#背景颜色设置
turtle.bgcolor("black")
def draw_pic(i):
for i in range(1, i + 1):
turtle.left(5)
turtle.width(1) # 画笔粗细
turtle.color("orange")
turtle.forward(200)
turtle.right(90) # 顺时针旋转90°
turtle.color("red")
turtle.forward(100)
turtle.right(90) # 顺时针旋转90°
turtle.color("green")
turtle.forward(200)
turtle.right(90) # 顺时针旋转90°
turtle.color("purple")
turtle.forward(100)
turtle.ht()
draw_pic(100)
turtle.done()
图案五:
import turtle as t
t.bgcolor("black")
sides=6 #6边
colors=["red","yellow","green","blue","orange","purple"]
#120为圈数,层数
for x in range(120):
t.pencolor(colors[x%sides])
t.forward(x*3/sides+x)
t.left(360/sides+1)
t.width(x*sides/200)
t.done()
图案六:螺旋线图案
# 显示螺旋线
import turtle # 导入turtle模块
t=turtle.Pen()
t.color("red")
for x in range(360): #循环
t.forward(x)
t.left(59)
图案七:八卦太极图
import turtle as t
import math
#第2步:窗口设置并注册窗口,退出设置
taiji = t.Screen()
taiji.bgcolor('yellow') #背景颜色
taiji.setup(1000,1000) #宽、高
taiji.title("旋转的太极八卦图") #窗口标题名
#隐藏画笔
t.hideturtle()
#判断是否要退出
running = True
#定义停止函数
def stop_loop():
global running
running = False
#获取窗口的Tk对象,并注册关闭事件
root = taiji.getcanvas().winfo_toplevel()
root.protocol('WM_DELETE_WINDOW',stop_loop)
#第3步:定义圆函数
#radius可以看作半径,extent是角度。fc填充的颜色,默认为白色。
def yuan(radius, extent=None, fc='white'):
# setheading是保证当次循环是同一朝向。
t.setheading(d_num)
t.forward(radius)
t.left(90)
t.down()
t.fillcolor(fc)
t.begin_fill()
t.circle(radius, extent)
t.end_fill()
t.up()
t.right(90)
t.back(radius)
#第4步:八卦图
def baguaxiantu():
t.pencolor("red") #笔的颜色
t.pensize(8) #笔头的大小(粗细)
#长度
length = 80
#八卦的半径
r_list = [260, 280, 300]
line_lists = [[0, 1, 0, 0, 1, 1, 0, 1],
[1, 1, 0, 0, 0, 1, 1, 0],
[0, 1, 1, 0, 1, 0, 1, 0]]
for r, line_list in zip(r_list, line_lists):
t.penup()
t.goto(0, 0)
t.seth(112.5)
t.forward(r)
t.seth(0)
t.pendown()
side = math.sin(math.radians(22.5))*r*2
for i in line_list:
t.penup()
t.forward((side-length)/2)
t.pendown()
if i == 0:
t.forward(length)
else:
t.forward(length*0.375)
t.penup()
t.forward(length*0.25)
t.pendown()
t.forward(length*0.375)
t.penup()
t.forward((side-length)/2)
t.pendown()
t.right(45)
#第5步:画文字函数定义
def wenzi():
t.penup()
t.goto(0, 0)
t.seth(90)
zi_list=['离','坤','兑','乾','坎','艮','震','巽']
zi_r=340
x = math.sin(math.radians(45))*zi_r
y= math.cos(math.radians(45))*zi_r
#文字的x和y坐标点列表
#未添加偏移量
#x_list=[0,x,zi_r,x,0,-x,-zi_r,-x]
#y_list=[zi_r,y,0,-y,-zi_r,-y,0,y]
#纠正偏移量,可微调
x_list=[-20,x-20,zi_r-20,x,0,-x,-zi_r,-x]
y_list=[zi_r-20,y-20,-20,-y,-zi_r,-y,0,y-20]
for i in range(len(zi_list)):
t.penup()
t.pencolor("green")
#文字坐标点
t.goto(x_list[i],y_list[i])
t.pendown()
t.write(zi_list[i],font=("Arial",12,"normal"))
t.penup()
t.pencolor("black")
t.penup()
#第6步:调用画八卦图和文字函数
baguaxiantu()
wenzi()
#定义移动变量
d_num = a_num =8
#第7步:主循环
while running: #此处将True换为running
t.goto(0, 0)
t.tracer(0, 0)
# 画个黑半圆
yuan(200, extent=180, fc='black')
# 画个白半圆
yuan(200, extent=-180)
# 向前100,画个黑半圆
t.forward(100)
yuan(100, extent=-180, fc='black')
# 向后200,画个白半圆
t.back(200)
yuan(100, extent=180)
# 顺便画个小黑圆,比白圆大点是因为白圆还有边框,显得大
yuan(33, fc='black')
# 向后200,画个小白圆
t.back(200)
yuan(30)
# 延时10毫秒,不加这句的话,因为tracer(0,0)是画完才显示,会导致一直啥都画不出来。
t.tracer(1, 10)
# 然后下次循环的goto在tracer(0,0)之前这个很有讲究。这相当于是tracer(1,10)执行的一个语句。
# 如果没有的话,会导致tracer(1,10)直接被tracer(0,0)覆盖,还是会什么也画不出来。。
#逆时针旋转
#d_num -= a_num
#顺时针旋转
d_num -= a_num
if d_num > 360:
d_num -= 360