在Python中,有一个内置的绘图模块,就是turtle。我们可以用它来绘制一些有趣的图形。
多边形
1、三边的效果:
![三边](https://img-blog.csdnimg.cn/20200325200755385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
2、六边的效果:
![六边](https://img-blog.csdnimg.cn/20200325200917740.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
是不是觉得非常挺炫酷的,但其实实现它的代码非常简单,仅仅10行Python代码就能实现。不过这都依赖于强大的turtle库。
3、多边形测试代码:
import turtle
t = turtle.Pen()
turtle.bgcolor("black")
sides = int(input('你需要绘制几边形:'))
colors = ["red", "yellow", "green", "blue", "orange", "purple"]
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 / 200)
4、side+5:
代码很简单,也做了相应的注释,里面很多地方都可以根据自己的需要改动,就可能出现你意想不到的效果。边长、背景颜色和线条颜色就不说了,for循环中的算法也可以改动,比如我把side+5后:
![side+5](https://img-blog.csdnimg.cn/20200325201816153.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
就成了这样,是不是挺好玩的。
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)
就出现了橡皮球效果:
![橡皮球](https://img-blog.csdnimg.cn/20200325202636499.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
浩瀚星辰
还有另外一种玩法,也是类似的转圈圈绘图,这次绘制的是一幅浩瀚星辰
![浩瀚星辰](https://img-blog.csdnimg.cn/20200325203016294.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
这就是浩瀚星辰的效果,绘制方式也很简单
1、首先导入turtle模块和random模块(一个画图模块、一个随机模块)
import turtle
import random
2、然后就是初始化一个画笔
turtle.bgcolor(0/255, 34/255, 64/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:
extent = random.random() * 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)
这样,就实现了一个浩瀚星辰的效果,当然,里面的参数也可以根据自己的需要来改;多试试就知道它到底是有多好玩了
比如我就加了一点代码,做成了一幅星空+星辰:
![动态](https://img-blog.csdnimg.cn/20200325210555220.gif)
![星空](https://img-blog.csdnimg.cn/20200325204251377.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
可以看到,后面那一点一点的就是星空了,它们都是动态的,星空里的星星会一点一点得点上去,星辰会不断得转圈圈
5、星空+星辰测试代码
from turtle import *
from random import *
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)
for i in range(150):
x = randint(-w/2, w/2)
y = randint(-h/2, h/2)
star.goto(x, y)
star.stamp()
cycle = Turtle()
cycle.ht()
cycle.speed(0)
cycle.color('white')
cycle.pu()
cycle.pensize(2)
radius = 5
acc_ext = 0
for i in range(1000):
extent = random() * 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:
acc_ext = 0
radius += 3
cycle.penup()
cycle.goto(0,-radius)
cycle.pendown()
cycle.setheading(0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)