Python浪漫星空

9e051e0d91474da09e6686bafa22c45c.gif

系列文章 

序号文章目录直达链接
1浪漫520表白代码https://want595.blog.csdn.net/article/details/130666881
2满屏表白代码https://want595.blog.csdn.net/article/details/129794518
3跳动的爱心https://want595.blog.csdn.net/article/details/129503123
4漂浮爱心https://want595.blog.csdn.net/article/details/128808630
5爱心光波https://want595.blog.csdn.net/article/details/132311588
6流星雨https://want595.blog.csdn.net/article/details/129395465
7满天星https://want595.blog.csdn.net/article/details/129572082
8烟花秀https://want595.blog.csdn.net/article/details/128746664
9圣诞树https://want595.blog.csdn.net/article/details/128213770
10雪花代码https://want595.blog.csdn.net/article/details/129038108
11模拟星空https://want595.blog.csdn.net/article/details/129948882
12生日蛋糕https://want595.blog.csdn.net/article/details/129694998
13樱花树https://want595.blog.csdn.net/article/details/130350743
14五彩气球https://want595.blog.csdn.net/article/details/130950744
15七彩花朵https://want595.blog.csdn.net/article/details/130897838
16恶搞代码https://want595.blog.csdn.net/article/details/131274862
17代码雨https://want595.blog.csdn.net/article/details/132574687

前言

中秋佳节即将来临,博主在此献上一个美丽的夜空,祝大家中秋快乐吖! 

Python绘图基础

Turtle入门

Python的turtle是一个基于tkinter的Python图形库,可以帮助初学者轻松地理解和绘制图形。它模仿了一个乌龟,与绘图窗口交互,画笔随乌龟移动而移动,完成特定的绘图任务。

turtle库是Python标准库中的一部分,所以在使用前不需要进行任何安装和下载。通过import turtle语句引入turtle库,就可以使用它提供的一些函数和方法了。

turtle库中最基本的函数包括:

  • turtle.forward(distance):向当前方向移动distance个像素的距离
  • turtle.backward(distance):向相反方向移动distance个像素的距离
  • turtle.right(angle):向右旋转angle度
  • turtle.left(angle):向左旋转angle度
  • turtle.penup():抬起画笔
  • turtle.pendown():放下画笔
  • turtle.color(color):设置画笔颜色
  • turtle.pensize(size):设置画笔大小
  • turtle.speed(speed):设置画笔速度

使用turtle库绘制图形时,需要注意的是:

  1. 绘图的起点在屏幕中心点,即坐标(0,0)处;
  2. turtle.forward()和turtle.backward()函数移动的距离单位是像素;
  3. turtle.right()和turtle.left()函数旋转的角度单位是度数;
  4. turtle.color()函数可以接收颜色名称或RGB值作为参数,例如“red”、“#FF0000”;
  5. turtle.speed()函数可以设置画笔速度,速度越快越接近实时;
  6. 当需要绘制完多个图形后,可以使用turtle.done()函数停止turtle工作。

总之,Python的turtle库是一个非常好的图形库,可以帮助初学者理解和掌握图形绘制的基础知识。从简单的绘制几何图形开始,逐渐掌握函数使用方法,最终能够绘制出复杂的图形。由于turtle库的易学、易用,所以它也成为了Python绘图库中的一个入门品种。

Turtle绘图

以下是turtle库中的一些简单例子,您可以通过运行这些代码来了解turtle库的使用方法:

1. 绘制一个正方形

import turtlefor i in range(4):turtle.forward(100)turtle.right(90)turtle.done()

2. 绘制一个五角星

import turtleturtle.left(72)for i in range(5):turtle.forward(100)turtle.right(144)turtle.forward(100)turtle.left(72)turtle.done()

3. 绘制一个彩虹

import turtlecolors = ["red", "orange", "yellow", "green", "blue", "purple"]turtle.pensize(10)for i in range(6):turtle.pencolor(colors[i])turtle.circle(50)turtle.right(60)turtle.done()

4. 绘制一个螺旋线

import turtleturtle.pensize(2)for i in range(100):turtle.forward(i*2)turtle.right(90)turtle.done()

这些示例只是turtle库中的一小部分,通过学习这些例子,您可以开始熟悉turtle库的使用方法,并且可以通过修改代码来创造自己的图形。

Python浪漫星空

程序设计

import math
import turtle as tu
import random as ratu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)  # 设置画布大小
tu.bgcolor('black')  # 设置画布颜色
t = tu.Pen()
t.ht()  # 隐藏画笔
colors2 = ['yellow', 'gold', 'orange']    # 星星的颜色列表
colors3 = ['skyblue', 'white', 'cyan', 'aqua']  # 流星的颜色列表class Star():  # 流星类def __init__(self):self.x1 = -850self.y1 = 300self.x2 = ra.randint(-1500, 1000)  # 星星的横坐标self.y2 = ra.randint(-500, 500)  # 星星的纵坐标self.r2 = ra.randint(1, 5)self.x3 = ra.randint(-1500, 1000)  # 流星的横坐标self.y3 = ra.randint(-500, 500)  # 流星的纵坐标self.r3 = ra.randint(50, 100)  # 流星的半径self.t = ra.randint(1, 3)self.speed2 = ra.randint(1, 3)  # 星星流星移动速度self.speed3 = ra.randint(10, 15)  # 流星的移动速度self.color2 = ra.choice(colors2)  # 星星的颜色self.color3 = ra.choice(colors3)  # 流星的颜色def moon(self):   # 画月亮t.penup()t.goto(self.x1, self.y1)t.pendown()t.pencolor("yellow")t.begin_fill()t.fillcolor("gold")t.circle(66)t.end_fill()def star1(self):  # 画星星的函数t.pensize(1)  # 设置画笔大小t.penup()  # 提笔t.goto(self.x2, self.y2)  # 设置星星在画布中的初始坐标t.pendown()  # 落笔t.speed(0)  # 画星星的速度,范围为0~10(0最快)t.color(self.color2)  # 设置星星的外框颜色t.begin_fill()  # 开始填色t.fillcolor(self.color2)  # 星星的内部颜色for i in range(5):  # 循环画星星t.forward(self.r2)t.right(144)t.forward(self.r2)t.left(72)t.end_fill()  # 结束填充颜色def star2(self):  # 画流星函数t.pensize(1)  # 流星的大小t.penup()  # 提笔t.goto(self.x3, self.y3)  # 随机位置t.pendown()  # 落笔t.color(self.color3)t.begin_fill()t.fillcolor(self.color3)t.setheading(-30)t.right(self.t)t.forward(self.r3)t.left(self.t)t.circle(self.r3 * math.sin(math.radians(self.t)), 180)t.left(self.t)t.forward(self.r3)t.end_fill()def move(self):  # 移动函数if self.x1 <= 850:  # 当月亮还在画布中时self.x1 += 1  # 设置左右移动速度else:self.x1 = -850if self.x2 <= 1000:  # 当星星还在画布中时self.x2 += 2 * self.speed2  # 设置左右移动速度else:self.r2 = ra.randint(1, 5)self.x2 = ra.randint(-1500, -1000)self.speed2 = ra.randint(1, 3)self.color2 = ra.choice(colors2)if self.y3 >= -500:  # 当流星还在画布中时self.y3 -= self.speed3  # 设置上下移动速度self.x3 += 2 * self.speed3  # 设置左右移动速度else:self.r3 = ra.randint(50, 100)self.t = ra.randint(1, 3)self.x3 = ra.randint(-1500, -750)self.y3 = ra.randint(-500,1000)self.speed3 = ra.randint(10, 15)self.color3 = ra.choice(colors3)……完整代码见文末公众号喔

程序分析

此代码实现了一个星空夜景的动画效果,包括月亮、星星和流星。整个代码分为四个部分:初始化,定义类Star,创建星星和流星对象,绘制动画。

首先,在初始化部分,引入了必要的库和模块,设置了画布大小和背景颜色,并创建了画笔对象t。接着定义了两个颜色列表,colors2存储星星颜色,colors3存储流星颜色。

在定义Star类部分,首先初始化了各个变量,包括星星和流星的坐标、半径和颜色等,其中坐标、半径、速度和颜色都是随机生成的。然后定义了三个函数,分别用于绘制月亮、星星和流星。绘制月亮使用了begin_fill()和end_fill()来填充黄色和金色,绘制星星使用了for循环来绘制五角星,绘制流星使用了circle()和setheading()方法来绘制弧线和转向。最后定义了move()函数来控制各个星星和流星的移动,当它们移动出画布范围后,重新赋值坐标和速度等参数,使得它们能够持续移动。

在创建Star对象部分,首先创建了一个空的列表Stars,然后使用for循环创建100个Star对象,并将它们依次添加到列表Stars中。

最后,在绘制动画部分,使用while循环来不断更新画布,并在其中使用tu.tracer(0)来关闭图形绘制时的延迟效果,从而使得绘制流畅。在每次循环时,首先清空画布,然后绘制月亮和所有的星星,最后绘制所有的流星,最后使用tu.update()方法将画布更新。

总的来说,此代码实现了一个星空夜景的动画效果,通过随机生成参数来使得星星和流星的位置、速度和颜色等变得多样化,使得动画看起来更加真实和生动。同时,通过类的封装和函数的定义,使得代码结构更加模块化和易于维护。

尾声

祝大家中秋节快乐!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

校园网web免认真,大量服务器

服务器加满了&#xff0c;没有几个人来&#xff0c;传点图片看实力 什么方法解web认证方式校园网&#xff1f; 一般的校园网是对学生免费开放的&#xff0c;假如你是学生输入学号密码上网就是了&#xff0c;假如你不是那就是想蹭网了&#xff0c;再假如你不想让管理员或上网行为…

数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

全文链接:http://tecdat.cn/?p27384 在本文中&#xff0c;数据包含有关葡萄牙“Vinho Verde”葡萄酒的信息&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 介绍 该数据集&#xff08;查看文末了解数据获取方式&#xff09;有1599个观测值和12个变量&#xf…

pdf添加水印

给pdf文件添加水印 引入依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version></dependency>添加水印 package com.it2.pdfdemo02.util;import com.itextpdf.tex…

用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

本篇文章将介绍如何使用开源的测试报告生成框架 Allure 生成规范、格式统一、美观的测试报告。 通过这篇文章的介绍&#xff0c;你将能够&#xff1a; 将 Allure 与 Pytest 测试框架相结合&#xff1b; 如何定制化测试报告内容 执行测试之后&#xff0c;生成 Allure 格式的测…

免费和开源的机器翻译软件LibreTranslate

什么是 LibreTranslate &#xff1f; LibreTranslate 免费开源机器翻译 API&#xff0c;完全自托管。与其他 API 不同&#xff0c;它不依赖于 Google 或 Azure 等专有提供商来执行翻译。它的翻译引擎由开源 Argos Translate 库提供支持。 这个软件在 2022 年 3 月的时候折腾过&…

【图论】有向图的强连通分量

算法提高课笔记 文章目录 理论基础SCC板子 例题受欢迎的牛题意思路代码 学校网络题意思路代码 最大半连通子图题意思路代码 银河题意思路代码 理论基础 什么是连通分量&#xff1f; 对于一个有向图&#xff0c;分量中任意两点u&#xff0c;v&#xff0c;必然可以从u走到v&am…

Web安全与攻防

Web安全概述 在Internet大众化及Web技术飞速演变的今天&#xff0c;在线安全所面临的挑战日益严峻。伴随着在线信息和服务的可用性的提升&#xff0c;以及基于Web的攻击和破坏的增长&#xff0c;安全风险达到了前所未有的高度。Web安全可以从以下三个方面进行考虑&#xff1a;…

Jmeter系列-控制器Controllers的介绍(8)

Controllers 简介 JMeter是一款功能强大的性能测试工具&#xff0c;而控制器是JMeter中非常重要的一个组件。控制器用于控制测试计划的执行流程&#xff0c;可以根据需求来控制线程的启动、停止、循环等操作。 Jmeter有两种类型的控制器&#xff1a;Samplers&#xff08;取样…

【Linux】动静态库

目录 1.静态库2.动态库3.静态库的使用区别总结 1.静态库 我们在linux中已经帮我们下载好了C和C所需要的各种库&#xff0c;库也是文件&#xff0c;实际上就是各种接口的实现&#xff0c;我们在使用系统提供的譬如printf等函数时&#xff0c;就是使用系统中的库文件。使用一个库…

驱动开发,IO多路复用实现过程,epoll方式

1.框架图 被称为当前时代最好用的io多路复用方式&#xff1b; 核心操作&#xff1a;一棵树&#xff08;红黑树&#xff09;、一张表&#xff08;内核链表&#xff09;以及三个接口&#xff1b; 思想&#xff1a;&#xff08;fd代表文件描述符&#xff09; epoll要把检测的事件…

Vue Router入门:为Vue.js应用添加导航

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【Unity】ShaderGraph应用(浮动气泡)

【Unity】ShaderGraph应用(浮动气泡) 实现效果 一、实现的方法 1.使用节点介绍 Position&#xff1a;获取模型的顶点坐标 Simple Noise:简单的噪声&#xff0c;用于计算顶点抖动 Fresnel Effect&#xff1a;菲涅耳效应&#xff0c;用于实现气泡效果 计算用节点 Add&…

jmeter生成html格式接口自动化测试报告

jmeter自带执行结果查看的插件&#xff0c;但是需要在jmeter工具中才能查看&#xff0c;如果要向领导提交测试结果&#xff0c;不够方便直观。 笔者刚做了这方面的尝试&#xff0c;总结出来分享给大家。 这里需要用到ant来执行测试用例并生成HTML格式测试报告。 一、ant下载安…

XSS入门 XSS Challenges

level1(直接注入) <script>alert(xss)</script>level2(双引号闭合标签) 测试 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT>发现<>"被转换&#xff0c;构造新的语句 "><script>alert(/xss/)</…

Keepalived 高可用(附带配置实例,联动Nginx和LVS)

Keepalived 一、Keepalived相关知识点概述1.1 单服务的风险&#xff08;单点故障问题&#xff09;1.2 一个合格的集群应该具备的特性1.3 VRRP虚拟路由冗余协议1.4 健康检查1.5 ”脑裂“现象 二、Keepalived2.1 Keepalived是什么&#xff1f;2.2 Keepalived体系主要模块及其作用…

任意文件下载

原理&#xff1a; 文件查看或文件下载功能&#xff0c;不做限制&#xff0c;恶意用户就能够查看或下载任意敏感文件&#xff0c;这就是文件查看与下载漏洞。 一般链接形式: download.php?path down.php?file data.php?file download.php?filename 或者包含参数: &Sr…

数据结构:树的概念和结构

文章目录 1. 树的概念2. 树的结构3. 树的相关概念4. 树的表示孩子表示法双亲表示法孩子兄弟表示法 5. 树在实际中的应用 1. 树的概念 树是一种非线性的数据结构,它是由 n (n > 0)个有限结点组成一个具有层次关系的. 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝…

.360勒索病毒和.halo勒索病毒数据恢复|金蝶、用友、ERP等数据恢复

导言&#xff1a; 随着数字化时代的持续发展&#xff0c;网络安全威胁也变得前所未有地复杂和难以应对。在这个充满挑战的网络环境中&#xff0c;勒索病毒已经成为了一种极为危险和破坏性的威胁。最近引起广泛关注的是.360勒索病毒&#xff0c;一种可怕的恶意软件&#xff0c;…

Python实现自主售卖机

1 问题 在python中我们常常使用到条件判断&#xff0c;if语句时常见的条件判断语句之一。那么如何使用if语句实现根据情况自动选择商品进行售卖呢&#xff1f; 2 方法 根据if语句执行时从上往下执行的特点&#xff0c;使用if语句、dict和list来实现整个流程。 代码清单 1 drink…

mysql 快速上传数据

快速上传数据 这个应该是比inset into values更快的插入数据的办法了。 不过要求挺苛刻的&#xff0c;数据要整理成和表格一致&#xff0c;也就是说每条数据都是完整的一条&#xff0c;而不是一部分。 下面的示例我以***为分割符划分字段&#xff0c;以 \n来分割每条数据。 LO…