Python的turtle库还能绘制这些有趣图形?

在Python中,有一个内置的绘图模块,就是turtle。我们可以用它来绘制一些有趣的图形。

多边形

1、三边的效果:
Python的turtle库还能绘制这些有趣图形?_第1张图片
2、六边的效果:
Python的turtle库还能绘制这些有趣图形?_第2张图片
是不是觉得非常挺炫酷的,但其实实现它的代码非常简单,仅仅10行Python代码就能实现。不过这都依赖于强大的turtle库。
3、多边形测试代码:

import turtle  #导入turtle库
t = turtle.Pen()  #创建turtle对象
turtle.bgcolor("black")  #设置背景颜色
sides = int(input('你需要绘制几边形:'))  #人性化输入需要绘制的边数
colors = ["red", "yellow", "green", "blue", "orange", "purple"]  #线条的颜色
for x in range(360):  #开始绘制图形,360为一个循环形成封闭
    t.pencolor(colors[x % sides])
    t.forward(x * 3 / sides + x)
    t.left(360 / sides + 1)
    t.width(x * sides / 200)

4、side+5:
代码很简单,也做了相应的注释,里面很多地方都可以根据自己的需要改动,就可能出现你意想不到的效果。边长、背景颜色和线条颜色就不说了,for循环中的算法也可以改动,比如我把side+5后:
Python的turtle库还能绘制这些有趣图形?_第3张图片
就成了这样,是不是挺好玩的。
5、修改规则:
我再把里面的规则改成这样:

for x in range(360):
    t.pencolor(colors[x%sides])
    t.forward(x*3/sides+x)
    t.left(360/sides+1)
    t.width(x*sides/180)
    t.left(91)

就出现了橡皮球效果:
Python的turtle库还能绘制这些有趣图形?_第4张图片

浩瀚星辰

还有另外一种玩法,也是类似的转圈圈绘图,这次绘制的是一幅浩瀚星辰
Python的turtle库还能绘制这些有趣图形?_第5张图片
这就是浩瀚星辰的效果,绘制方式也很简单
1、首先导入turtle模块和random模块(一个画图模块、一个随机模块)

import turtle
import random

2、然后就是初始化一个画笔

turtle.bgcolor(0/255, 34/255, 64/255) # RGB 红绿蓝三色的值 0-1 0-255
turtle.hideturtle() # 隐藏画笔
turtle.speed(0)  #画笔运动的速度
turtle.color(1,1,1) # 白色
turtle.penup()  #抬笔
turtle.pensize(2)  #画笔的粗细

3、之后需要定义两个变量来统计半径和圆弧

radius = 5  # 半径
acc_ext = 0 # 累计圆弧

4、然后就可以无限循环来画圆了

while True:  # 无限循环
	# 随机圆弧
	# 计数看总的圆弧长度是不是超过了360度
    extent = random.random() * 90 #0-90的随机数
    color = random.choice([(1,1,1),(0/255, 34/255, 64/255)])  #白色和另外一种颜色交替
    turtle.color(color)
    turtle.circle(radius, extent)  #开始画圆
    acc_ext += extent  #不断延伸
    if acc_ext > 360:  #如果
        acc_ext = 0
        radius += 3
        turtle.penup()
        turtle.goto(0, -radius)
        turtle.pendown()
        turtle.setheading(0) # 把头摆正

这样,就实现了一个浩瀚星辰的效果,当然,里面的参数也可以根据自己的需要来改;多试试就知道它到底是有多好玩了

比如我就加了一点代码,做成了一幅星空+星辰:
Python的turtle库还能绘制这些有趣图形?_第6张图片
Python的turtle库还能绘制这些有趣图形?_第7张图片
可以看到,后面那一点一点的就是星空了,它们都是动态的,星空里的星星会一点一点得点上去,星辰会不断得转圈圈

5、星空+星辰测试代码

#导入模块
from turtle import *
from random import *

#用turtle画星空背景
s = Screen()
s.title('星空+星辰@栀丶子')
w, h = 700, 700
s.setup(w, h)
s.bgcolor('black')
star = Turtle()
star.shape('circle')
star.shapesize(0.05,0.05)
star.color('white')
star.pu()
star.speed(6)  #为0是瞬间画好
for i in range(150):
    x = randint(-w/2, w/2)  #全称random.randint
    y = randint(-h/2, h/2)
    star.goto(x, y)
    star.stamp()  #印下去
    

#画浩瀚星辰
cycle = Turtle()
cycle.ht()  #turtle.hideturtle()
cycle.speed(0)
cycle.color('white')
cycle.pu()
cycle.pensize(2)
radius = 5  #圈的半径
acc_ext = 0  #累计圆弧
for i in range(1000):
    extent = random() * 90  #0到90的随机数,每次画的圆弧长度是随机的
    color = choice([(1,1,1),(0/255, 0/255, 0/255)])  #白色和黑色当中随机选色
    cycle.color(color)
    cycle.circle(radius, extent)
    acc_ext += extent  #统计圆弧的长度
    if acc_ext > 360:  #若正好一圈,则半径增加3
        acc_ext = 0
        radius += 3
        cycle.penup()
        cycle.goto(0,-radius)  #每圈画笔的起点为圆心的向下一个半径位置
        cycle.pendown()  #pendown落笔,准备重新开始画
        cycle.setheading(0)  #把头摆正,方向0度为向右

你可能感兴趣的:(Python进阶者)