当前位置: 首页 > wzjs >正文

淘宝联盟+做网站ups国际快递网站建设

淘宝联盟+做网站,ups国际快递网站建设,个人网站可以做商城吗,十大网游人气排行榜系列文章 序号直达链接Tkinter1Python李峋同款可写字版跳动的爱心2Python跳动的双爱心3Python蓝色跳动的爱心4Python动漫烟花5Python粒子烟花Turtle1Python满屏飘字2Python蓝色流星雨3Python金色流星雨4Python漂浮爱心5Python爱心光波①6Python爱心光波②7Python满天繁星8Pytho…

3D星空

系列文章

序号直达链接
Tkinter
1Python李峋同款可写字版跳动的爱心
2Python跳动的双爱心
3Python蓝色跳动的爱心
4Python动漫烟花
5Python粒子烟花
Turtle
1Python满屏飘字
2Python蓝色流星雨
3Python金色流星雨
4Python漂浮爱心
5Python爱心光波①
6Python爱心光波②
7Python满天繁星
8Python五彩气球
9Python白色飘雪
10Python七彩花朵
11Python 3D星空
12Python大雪纷飞
13Python一闪一闪亮星星
14Python爱心泡泡
15Python爱心射线
16Python圣诞礼物
17Python礼物圣诞树
18Python浪漫星空
19Python飞舞蝙蝠
20Python万圣礼物
21Python蓝色飘雪
Pygame
1Python跨年烟花
2Python炫酷烟花
3Python黑客帝国字母雨
敬请期待……

写在前面

Python模拟3D星空动画的完整代码。

技术需求

  1. Python turtle

    • turtle库用于在屏幕上绘制图形和实现动画。通过Turtle对象,可以控制绘制的形状、位置、颜色等属性,并进行动态更新。
    • turtle库的主要功能包括创建图形、设置画笔颜色、填充颜色、控制对象的速度和位置,以及隐藏和显示图形等。
  2. Python random

    • random库用于生成随机数。在这段代码中,它被用来随机生成星星的位置、大小和移动速度,增加了动画的多样性和不可预测性。
    • 例如,使用ra.uniform(0, 1)生成一个0到1之间的浮动数,来控制星星的大小;使用ra.randint()来生成随机的整数,以确定星星的初始位置和速度。
  3. Turtle 对象的克隆

    • 通过turtle.clone()方法,克隆一个turtle对象,使每颗星星都拥有独立的属性(如位置、速度和大小)。每颗星星都是turtle对象的一个副本,因此它们可以独立地移动和变化。
  4. 循环控制

    • 使用while True:无限循环和for循环来不断更新每颗星星的位置,使动画持续运行。
    • 通过不断更新星星的位置来创建动态效果,并且当星星移出屏幕时,通过隐藏、重新设置位置并显示来实现星星的“循环出现”效果。
  5. 事件驱动模型

    • tu.mainloop()启动了事件循环,保持图形窗口的持续显示和交互。这是turtle库和其他图形库常用的机制,用来让程序持续运行,直到用户关闭窗口。

完整代码

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()
stars = []
……

代码分析

这段代码使用Python的turtle库创建了一个简单的3D星空动画效果,模拟了在黑暗背景上移动的星星。星星会随机生成,并且向左移动,当其移出屏幕时会重新出现在屏幕的右侧,从而形成一个连续的动态效果。代码的主要流程包括窗口设置、星星生成、星星移动和循环刷新。接下来,我将详细分析每个部分的功能及实现。

1. 导入库

import turtle as tu
import random as ra

这行代码导入了turtlerandom模块,分别用于绘制图形和生成随机数。turtle库是Python自带的一个图形绘制库,常用于绘制各种图形和动画。random库则用于生成随机数,这在本代码中用于随机生成星星的位置、大小和移动速度。

2. 设置窗口尺寸和背景

width, height = 800, 600
tu.setup(width, height)
tu.title("3D星空")
tu.bgcolor("black")
tu.delay(0)
  • width, height = 800, 600:定义了绘图窗口的宽度和高度为800x600像素。
  • tu.setup(width, height):设置绘图窗口的尺寸,宽度为800像素,高度为600像素。
  • tu.title("3D星空"):设置窗口的标题为"3D星空"。
  • tu.bgcolor("black"):设置窗口的背景色为黑色,这为星空提供了背景。
  • tu.delay(0):设置绘制的延迟为0,即关闭动画延迟,让图形的绘制过程尽量流畅。

3. 创建turtle对象

t = tu.Turtle(visible=False, shape='circle')
t.pencolor("white")
t.fillcolor("white")
t.penup()

这段代码创建了一个turtle对象t,用于绘制星星。具体细节如下:

  • tu.Turtle(visible=False, shape='circle'):创建一个形状为圆形、初始状态不可见的turtle对象。星星将由这个turtle对象的克隆来表示。
  • t.pencolor("white"):设置画笔颜色为白色,因为星星在黑色背景上应该是白色的。
  • t.fillcolor("white"):设置填充颜色为白色,虽然在这段代码中没有使用填充,但它定义了默认的颜色。
  • t.penup():提升画笔,防止在移动过程中留下痕迹。

4. 创建星星

这部分代码用于生成99颗星星,每颗星星通过克隆t对象来创建。分析如下:

  • stars = []:创建一个空的列表stars,用于存储所有的星星对象。
  • for i in range(99)::循环99次,生成99颗星星。
  • star = t.clone():通过clone()方法克隆一个turtle对象,每颗星星都将是t对象的一个独立副本。每颗星星都是一个turtle对象,因此可以独立移动。
  • s = ra.uniform(0, 1) / 3:生成一个0到1之间的随机数,并除以3,得到一个较小的值,作为星星的大小比例。shapesize(s, s)将星星的大小设置为这个比例,使星星看起来具有不同的尺寸。
  • star.shapesize(s, s):设置星星的形状大小,使得每颗星星的尺寸不同。
  • star.speed(ra.randint(2, 5)):设置星星的移动速度为一个2到5之间的随机整数。turtle的速度决定了星星的移动速度,数字越小,星星越快。
  • star.setx(ra.randint(width//2, width)):将星星的x坐标设置为从屏幕右侧开始的随机位置。ra.randint(width//2, width)生成一个位于屏幕右半部分的随机x坐标。
  • star.sety(ra.randint(-height//2, height//2)):将星星的y坐标设置为一个在屏幕上下方向上的随机位置。ra.randint(-height//2, height//2)生成一个在窗口上下范围内的随机y坐标。
  • star.showturtle():显示克隆出来的星星,初始时它是不可见的。
  • stars.append(star):将新创建的星星添加到stars列表中,方便后续进行移动操作。

5. 星星的运动与循环

这部分代码实现了星星的不断移动,并且当星星移出屏幕时,它会重新出现在屏幕右侧。具体实现细节如下:

  • while True::使用无限循环,使得星星的运动不断进行。
  • for star in stars::遍历stars列表中的所有星星对象,每次循环处理一颗星星的移动。
  • star.setx(star.xcor() - star.speed()):通过xcor()获取星星的当前x坐标,然后减去星星的速度,从而使星星向左移动。每颗星星的速度是随机的,因此它们的移动速度不同。
  • if star.xcor() < -width//2::判断星星的x坐标是否小于窗口左侧的边界。如果是,说明星星已经离开屏幕的左侧。
  • star.hideturtle():将星星隐藏,因为它需要重新生成位置。
  • star.setx(ra.randint(width//2, width)):将星星的x坐标重置为屏幕右侧的随机位置,即让星星从右侧重新出现。
  • star.sety(ra.randint(-height//2, height//2)):将星星的y坐标重置为一个新的随机值,使得星星的纵向位置也发生变化。
  • star.showturtle():重新显示星星,使它再次出现在屏幕上。

6. 主循环

tu.mainloop()启动turtle的主事件循环,保持图形窗口的持续显示。所有的图形绘制和动画效果都会在这个循环中持续进行。

7. 总结

通过这段代码,作者创建了一个简单而有趣的星空动画效果。每颗星星具有不同的大小、速度和初始位置,并且随着时间的推移,它们会不断地从右侧进入、向左移动并离开屏幕,形成了一个动态的星空效果。通过使用turtle库的克隆功能,代码实现了星星的生成和移动,使得每颗星星都是独立的个体,可以自由地在屏幕上移动。整体代码结构简单清晰,使用了random模块来增加随机性,使得每次运行时,星空的效果都不同,增强了互动性和趣味性。

写在后面

我是一只有趣的兔子,感谢你的喜欢!

http://www.dtcms.com/wzjs/825873.html

相关文章:

  • 手机网站制作时应该注意的问题上海高端网站搭建
  • seo整站优化的思路及步骤网站建设英文版
  • 网站模板建设报价搜索引擎优化实验报告
  • 用模板建商城购物网站网站开发的流程是
  • 北京市网站制作设计惠州市建设局建工办网站
  • 优秀策划设计网站中企动力员工感受
  • 谁能帮我做网站赶集网天津网站建设
  • 做刀模网站ajax瀑布流网站模板
  • 柳州网站建设推荐西宁专业做网站公司
  • 盘锦网站制作公司想找人做网站和app
  • 企业做网站的申请报告安阳网站建设官网
  • 具权威的小企业网站建设企业网站为什么做优化
  • 建设网站都要什么标识标牌制作
  • 河北网站建设公司做软件挣钱的网站
  • wordpress美化背景长沙官网seo技术
  • 中文无版权图片网站怎么在高德地图上添加自己的店铺
  • 乐山网站制作设计公司我想做网络推广
  • 做公司网站的必要性郑州大学科技园手机网站建设
  • 知名网站的org域名重庆网站排名优化公司
  • 湛江有没有做网站的网络规划设计师2022论文题目
  • 怎么建公司网站公司名字参考大全
  • 网站首页模块建设建网站做站在
  • 京东网站建设及特点天津市建设工程管理总队网站
  • 网站建设好之后都有哪些推广方法保护稀有动物网站建设策划书
  • wap手机网站开发asp经验好乐买的网站推广方式
  • 企业内部网站建设wap盛唐建站
  • 在58同城做网站怎么样微信网站建设报价单
  • 免费建立公司网站天行健公司网站建设
  • 网站服务费怎么做凭证自己如何搭建服务器
  • 年前做网站的好处杭州的网站设计