Python模拟星空

news/2025/2/19 8:14:53/

模拟星空

文章目录

  • 前言
  • Turtle基础
    • 1.1 Turtle画板
    • 1.2 Turtle画笔
    • 1.3 Turtle画图
    • 1.4 Turtle填色
    • 1.5 Turtle写字
  • 模拟星空
    • 模拟星球
    • 浪漫星空
  • 尾声

前言

Python模拟星空,你值得拥有!uu们一周不见啦,本周博主参考网上大佬们的星空,给大家带来了属于自己的星空,快来看看吧~

Turtle基础

小海龟(Turtle)是Python中画图的一个重要的包(内置包),里面包含丰富的画图工具以及画图的各种功能,当你学会了用Turtle画图后,你可以画任何你想画的图案哦

1.1 Turtle画板

Turtle的画板大小可以用turtle.screensize()函数来设置

turtle.screensize(width,height,bg):设置画板的大小,包含长和宽,width为宽,height为高,bg为画布颜色

1.2 Turtle画笔

Turtle的画笔有几个常用的函数

①turtle.penup():抬起画笔,此时移动画笔不会在画布上留下痕迹哦
②turtle.pendown():放下画笔,与turtle.penup相对应,放下画笔后就可以继续画画了(放下画笔后画画会在画布上留下痕迹)
③turtle.pensize():控制画笔的大小(可以根据需求自行定义画笔的大小哦)
④turtle.pencolor():控制画笔的颜色(可以自己在网上查阅所有python可以使用的颜色,python里面可以用的颜色有很多的哦)
⑤turtle.hideturtle():隐藏画笔(隐藏画笔以后画图时画笔就看不到了)

1.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最快)

1.4 Turtle填色

在画好图后,我们经常需要对其进行填色,这里可以用turtle.fillcolor()函数,括号里写入你想填充的颜色即可。
在使用turtle.fillcolor()函数要注意其基本格式

turtle.beginfill()     #开始填充
turtle.fillcolor()      #输入填充的颜色
turtle.endfill()        #结束填充

1.5 Turtle写字

在完成整个画图后,我们可以使用turtle.write()函数进行写字

turtle.write(" ",move,align,font)
① 第一个位置双引号内填入要写的字
② move(可选):在默认情况下,move为false。如果move为true,则笔将移动到右下角
③ align(可选):可取值是left即左、center即中、right即右之一,是字符串格式
④ font(可选):字体三元组(fontname、fontsize、fonttype),fontname即字体名称(字符串格式,如“宋体”),fontsize即字体大小),fonttype即字体类型如:normal(普通)、bold(粗体)、italic(斜体)

模拟星空

简单了解turtle小海龟后,让我们一起来模拟星空吧!

模拟星球

我们将每一个星球看成一个质点,每一个质点用小海龟表示,通过克隆小海龟生成一个个星球

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))
for i in range(99):star=t.clone()s=ra.uniform(0,1)/3star.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()

尾声

友友们下期见!


http://www.ppmy.cn/news/38873.html

相关文章

maven-vagrant-git

【maven安装外部jar包&#xff1a; mvn install:install-file -DgroupId<groupId> : 设置项目代码的包名(一般用组织名) -DartifactId<artifactId> : 设置项目名或模块名 -Dversion1.0.0 : 版本号 -Dpackagingjar : 什么类型的文件(jar包) …

如何区分几级域名

参考wiki的域名解析 域名是优一串用点分隔的字符组成的&#xff0c;核心是域名系统。在域名系统的层次结构中&#xff0c;各种域名都隶属于域名系统根域的下级。 域名分级&#xff1a; 域名的第一级是顶级域名&#xff0c;包括通用顶级域名、国家和地区顶级域名。顶级域名下…

理论基础-

PLC 和 CDT 在三维中&#xff0c;PLC&#xff08;Piecewise Linear Complexes&#xff09;由顶点&#xff0c;线段和面组成。顶点和线段与在二维情况下没什么不同&#xff0c;只是他们嵌入在三维空间中。然而&#xff0c;面的情况可能很复杂。一个面可以有任意数量的边&#x…

多线程之等待唤醒机制

生产者和消费者 核心思想&#xff1a;利用桌子来控制线程的执行。 消费者等待 消费者抢到了桌子的执行权&#xff0c;但是由于桌子上没有吃的&#xff0c;所以消费者需要先等待&#xff08;wait&#xff09; 消费者等待时&#xff0c;cpu的执行权一定会被厨师拿走&#xff…

4.3---Spring框架之如何解决循环依赖问题?---(深入版本)

1、什么是循环依赖&#xff1a; 类与类之间的依赖关系形成了闭环&#xff0c;就会导致循环依赖问题的产生 代码如下&#xff1a; public class ClassA {private ClassB classB;public ClassB getClassB() {return classB;}public void setClassB(ClassB classB) {this.classB…

3年测试越来越迷茫... 技术跟不上接下来是不是要被淘汰了?

这两天和朋友聊到了软件测试的发展&#xff1a;这一行的变化确实蛮大&#xff0c;从开始最基础的功能测试&#xff0c;到现在自动化、性能、安全乃至于以后可能出现的大数据测试、AI测试岗位需求逐渐增多。我也在软件测试这行摸爬滚打有些日子了&#xff0c;正好有朋友问我&…

Vue3日期选择器(DatePicker)

本组件基于 vuepic/vue-datepicker 插件进行了二次封装&#xff0c;以便更适合日常使用&#xff01; 官方文档&#xff1a;https://vue3datepicker.com/installation/ 除了年、月、时分秒选择器以外&#xff0c;其余选择的日期&#xff08;v-model:date&#xff09;均已调整为…

【webpack5】高级优化

介绍 本章节主要介绍 Webpack 高级配置。 所谓高级配置其实就是进行 Webpack 优化&#xff0c;让我们代码在编译/运行时性能更好~ 我们会从以下角度来进行优化&#xff1a; 提升开发体验提升打包构建速度减少代码体积优化代码运行性能 提升开发体验 SourceMap 为什么 开发…