通过自学Python海龟绘图,运用trutle的一系列方法绘制了一些图案,由于刚刚接触Python,代码可能繁多。
1.绘制螺旋炫彩正方形顾名思义就是使用递归循环控制每次选择的角度以及每次增长的大小,使用random使画笔每次循环中在255种颜色中随机选取从而使图案拥有不同颜色,同时在循环中使用if语句规定旋转到最后的长度,窗口的背景色可以使用bgcolor()自己选择颜色,也可以使用bgpic()运用自己下载的图片(不能太大,太大需要裁剪)作为背景。
import random
import turtle
p = turtle.Turtle()
# 创建海龟窗口
w = turtle.Screen()
# 设置窗口背景
w.bgpic("D:/Python项目/1.png")
# 画笔速度
p.speed(0)
turtle.colormode(255)
def rectangle(cnt):
# 设置旋转次数
if cnt > 580:
return
# 使画笔颜色随机
a = random.randint(0, 255)
b = random.randint(0, 255)
c = random.randint(0, 255)
p.pencolor(a, b, c)
p.forward(cnt)
p.right(90.5)
rectangle(cnt + 1)
rectangle(1)
turtle.done()
运行结果如下:
2. 绘制哆啦A梦主要需要正确找到以及准确定位到画笔的坐标和方向,最复杂的眼睛(椭圆)需要使用for循环嵌套if条件判断来实现,使用for循环将循环角度120度,if语句通过判断角度来判断画笔旋转方向[0, 30),[60,90)左转;[30, 60),[90, 120)右边,控制每次循环的角度(控制椭圆的胖瘦)。
import random
import turtle
turtle.colormode(255)
# 定义一个画笔移动坐标
def coordinate(x, y):
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
# 头部
def head():
# 设置画笔大小
turtle.pensize(2)
# 填充海蓝色
turtle.fillcolor("#1E90FF")
turtle.begin_fill()
coordinate(0, 100)
turtle.circle(150)
turtle.end_fill()
turtle.fillcolor("white")
turtle.begin_fill()
turtle.circle(115, 150)
coordinate(-58, 315)
turtle.left(60)
turtle.circle(115, 150)
coordinate(0, 328)
turtle.right(90)
# 使用for循环画两个椭圆眼睛
long: float = 2.5
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
long -= 0.05
turtle.forward(long)
turtle.left(3)
else:
long += 0.05
turtle.forward(long)
turtle.left(3)
turtle.right(180)
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
long -= 0.05
turtle.forward(long)
turtle.left(3)
else:
long += 0.05
turtle.forward(long)
turtle.left(3)
turtle.end_fill()
coordinate(33, 320)
turtle.pensize(5)
turtle.circle(10, 180)
turtle.pensize(1)
turtle.fillcolor("black")
turtle.begin_fill()
coordinate(-33, 320)
turtle.circle(12)
turtle.end_fill()
turtle.fillcolor("white")
turtle.begin_fill()
coordinate(-20, 320)
turtle.circle(5)
turtle.end_fill()
# 画鼻子
turtle.fillcolor("red")
turtle.begin_fill()
coordinate(0, 305)
turtle.right(90)
turtle.circle(15)
turtle.end_fill()
# 画嘴巴
coordinate(0, 275)
turtle.left(90)
turtle.forward(120)
turtle.left(90)
turtle.circle(90, 60)
turtle.penup()
turtle.left(120)
turtle.forward(150)
turtle.pendown()
turtle.left(120)
turtle.circle(90, 60)
# 画胡子
coordinate(30, 235)
turtle.forward(70)
coordinate(30, 225)
turtle.right(20)
turtle.forward(70)
coordinate(30, 245)
turtle.left(40)
turtle.forward(70)
coordinate(-30, 235)
turtle.left(160)
turtle.forward(70)
coordinate(-30, 225)
turtle.left(20)
turtle.forward(70)
coordinate(-30, 245)
turtle.right(40)
turtle.forward(70)
# 身体
def body():
turtle.fillcolor("#1E90FF")
turtle.begin_fill()
turtle.penup()
coordinate(-70, 118)
turtle.seth(-28)
turtle.circle(150, 60)
turtle.pendown()
turtle.right(10)
turtle.forward(150)
turtle.right(90)
turtle.forward(70)
turtle.right(80)
turtle.forward(130)
turtle.right(110)
turtle.forward(15)
turtle.right(180)
turtle.circle(-1000, 15)
turtle.right(85)
turtle.forward(80)
turtle.right(90)
turtle.circle(60, 180)
turtle.right(90)
turtle.forward(85)
turtle.right(85)
turtle.circle(-1000, 15)
coordinate(-133, 10)
turtle.left(125)
turtle.forward(90)
turtle.right(90)
turtle.forward(70)
turtle.right(90)
turtle.forward(183)
coordinate(-70, 118)
turtle.end_fill()
turtle.seth(-28)
turtle.circle(150, 10)
turtle.fillcolor("white")
turtle.begin_fill()
turtle.right(137)
turtle.circle(110, 312)
turtle.left(41)
turtle.circle(-150, 36)
turtle.end_fill()
coordinate(80, 0)
turtle.left(108)
turtle.circle(-80, 180)
turtle.right(90)
turtle.forward(160)
def bell():
# 画围巾
turtle.fillcolor("red")
turtle.begin_fill()
turtle.pensize(2)
coordinate(-90, 120)
turtle.forward(180)
turtle.circle(-10, 180)
turtle.forward(180)
turtle.circle(-10, 180)
turtle.end_fill()
# 画铃铛
turtle.fillcolor("yellow")
turtle.begin_fill()
coordinate(0, 75)
turtle.circle(20)
turtle.end_fill()
turtle.fillcolor("black")
turtle.begin_fill()
coordinate(0, 85)
turtle.circle(5)
turtle.end_fill()
turtle.right(90)
turtle.pensize(5)
turtle.forward(10)
turtle.pensize(0)
# 画脚
def foot():
coordinate(65, -230)
turtle.fillcolor("white")
turtle.begin_fill()
turtle.left(90)
turtle.forward(90)
turtle.circle(15, 180)
turtle.forward(90)
turtle.circle(15, 180)
coordinate(-140, -230)
turtle.forward(90)
turtle.circle(15, 180)
turtle.forward(90)
turtle.circle(15, 180)
turtle.end_fill()
# 画手
def hand():
coordinate(250, 116)
turtle.fillcolor("white")
turtle.begin_fill()
turtle.circle(40)
coordinate(-245, -48)
turtle.circle(40)
turtle.end_fill()
head()
body()
bell()
foot()
hand()
# 在右下方输出“哆啦A梦”
coordinate(200, -350)
# 使用random使每次输出字体颜色(255种)随机
a = random.randint(0, 255)
b = random.randint(0, 255)
c = random.randint(0, 255)
turtle.pencolor(a, b, c)
# 设置字体
turtle.write("哆啦A梦", font=("华文行楷", 40, 'italic'))
turtle.done()
运行结果如下: