利用python中Turtle来模拟星空

2024-05-28 21:28:27 浏览数 (1)

1 问题

如何利用python实现星空模拟?

2 方法

1、Turtle画板

Turtle的画板大小可以用turtle.screensize()函数来设置turtle.screensize(width,height,bg):设置画板的大小,包含长和宽,width为宽,height为高,bg为画布颜色

2、Turtle画笔

①turtle.penup():抬起画笔,此时移动画笔不会在画布上留下痕迹哦

②turtle.pendown():放下画笔,与turtle.penup相对应,放下画笔后就可以继续画画了(放下画笔后画画会在画布上留下痕迹)

③turtle.pensize():控制画笔的大小(可以根据需求自行定义画笔的大小哦)

④turtle.pencolor():控制画笔的颜色(可以自己在网上查阅所有python可以使用的颜色,python里面可以用的颜色有很多的哦)

⑤turtle.hideturtle():隐藏画笔(隐藏画笔以后画图时画笔就看不到了)

3、Turtle画图

①turtle.forward(x):将画笔向前移动x个像素(x可以理解为距离)

②turtle.backward(x):将画笔向后退x个像素(x可以理解为距离)

③turtle.left(n):将画笔向左旋转n度

④turtle.right(n):将画笔向右旋转n度

⑤turtle.speed():设置画笔画图的速度(1~10递增,0最快)

4、Turtle填色

turtle.beginfill() #开始填充

turtle.fillcolor() #输入填充的颜色

turtle.endfill() #结束填充

代码清单 1

代码语言:txt复制
import turtle as tu
import random as ra
width ,height = 800,600
tu.setup(width,height)
tu.title("3D星空")
tu.bgcolor("black")
tu.delay(0)
t=tu.Turtle(visible=False,shape='circle')
t.pencolor("white")
t.fillcolor("white")
t.penup()
t.goto(ra.randint(width/2,width),ra.randint(-height/2,height/2))
stars = []
for i in range(99):
   star=t.clone()
   s=ra.uniform(0,1)/3
   star.shapesize(s,s)
   star.speed(ra.randint(2,5))
   star.setx(ra.randint(width/2,width))
   star.sety(ra.randint(-height/2,height/2))
   star.showturtle()
   stars.append(star)
while True:
   for star in stars:
       star.setx(star.xcor()-star.speed())
       if star.xcor()<-width/2:
           star.hideturtle()
           star.setx(ra.randint(width/2,width))
           star.sety(ra.randint(-height/2,height/2))
           star.showturtle()

3 结语

运用Turtle画图可以用来画任何图案,但目前通过python来解决此类问题只能停留在最基本的层面上,要想深入解决此类问题,则要通过后续的学习,了解更多的python知识,从来实现对该类问题的完美解决。

0 人点赞