探索无限创造力的星辰大道,画出想象的浩瀚宇宙!-turtle

在这里插入图片描述

介绍

视频教程地址在此:https://www.bilibili.com/video/BV1Pm4y1H7Tb/

大家好,欢迎来到本视频!今天,我们将一同探索Python编程世界中的一个有趣而创意的库——Turtle库。无需专业绘画技能,你就可以轻松地用代码绘制出美丽的图形、艺术作品甚至是动画。

Turtle库灵感来自于海龟,它允许你像控制海龟一样来控制一个绘图画布。让我们看看如何使用这个库来创造独特的艺术。

首先,我们导入Turtle库,然后创建一个海龟对象,可以命名为"t"。随后,我们就可以使用各种方法来控制海龟的移动、绘制形状和改变颜色。

只需几行代码,你就可以绘制出直线、圆、多边形甚至是心形。通过改变参数,你可以调整图形的大小、角度和颜色,让你的创意无限延展。

Turtle库不仅仅是静态图形,它还支持动画!你可以使用循环和定时来创建精彩的动画效果。比如,我们可以绘制出一个移动的螺旋图案,让海龟成为你的艺术舞台上的舞者。

但这还不止!Turtle库也可以用于教育和学习。它能够帮助初学者理解编程概念,如循环和条件语句,通过可视化的方式更加直观地展示。

无论你是艺术家、初学者还是教育工作者,Turtle库都能够激发你的创造力和好奇心。通过简单的代码,你可以创造出令人惊叹的图像和动画。

下面给出几个案例,大家只需要复制粘贴后运行代码就可以看到效果:

气球飞舞

效果

在这里插入图片描述

代码

import turtle as tu
import random as ra
import math
tu.title("编程启航")
tu.setup(1.0, 1.0)
t = tu.Pen()
t.ht()
colors = ['red','skyblue','orange','yellow','lime','pink','violet']
class Balloon():    #每个气球(气球类)def __init__(self):self.r = ra.randint(12,20)        #气球的半径self.x = ra.randint(-1000,1000)   #气球的横坐标self.y = ra.randint(-500,500)     #气球的纵坐标self.f = ra.uniform(-3.14,3.14)   #气球左右移动呈正弦函数self.speed = ra.randint(5,10)     #气球移动速度self.color = ra.choice(colors)    #气球的颜色self.outline = 1                  #气球的外框大小(可不要)def move(self):                    #气球移动函数if self.y <= 500:            #当气球还在画布中时self.y += self.speed     #设置上下移动速度self.x += self.speed * math.sin(self.f)    #设置左右移动速度self.f += 0.1            #可以理解成标志,改变左右移动的方向else:                        #当气球漂出了画布时,重新生成一个气球self.r = ra.randint(12,20)self.x = ra.randint(-1000,1000)self.y = -500self.f = ra.uniform(-3.14,3.14)self.speed = ra.randint(5,10)self.color = ra.choice(colors)self.outline = 1def draw(self):       #画气球函数,就是用turtle画气球t.penup()t.goto(self.x,self.y)t.pendown()t.color(self.color)t.left(45)t.begin_fill()t.fillcolor(self.color)for i in range(2):t.circle(self.r*2, 90)t.circle(self.r, 90)t.end_fill()t.hideturtle()t.circle(self.r,-45)t.right(90)t.circle(20,90)
Balloons = []            #用列表保存所有气球
for i in range(100):Balloons.append(Balloon())
tu.bgcolor('black')
while True:           #开始漂浮tu.tracer(0)t.clear()for i in range(len(Balloons)):    #在画布中设置50个漂浮的气球Balloons[i].move()Balloons[i].draw()tu.penup()          #写祝福tu.goto(-250,20)tu.pendown()tu.color("skyblue")tu.write("编程启航!",font=("黑体", 80,"italic"))  #"italic"表示斜体tu.hideturtle()tu.update()
tu.mainloop()

时钟程序

效果

在这里插入图片描述
代码:

# coding=utf-8
import turtle
from datetime import *# 抬起画笔,向前运动一段距离放下
def Skip(step):turtle.penup()turtle.forward(step)turtle.pendown()def mkHand(name, length):# 注册Turtle形状,建立表针Turtleturtle.reset()Skip(-length * 0.1)# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。turtle.begin_poly()turtle.forward(length * 1.1)# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。turtle.end_poly()# 返回最后记录的多边形。handForm = turtle.get_poly()turtle.register_shape(name, handForm)def Init():global secHand, minHand, hurHand, printer# 重置Turtle指向北turtle.mode("logo")# 建立三个表针Turtle并初始化mkHand("secHand", 135)mkHand("minHand", 125)mkHand("hurHand", 90)secHand = turtle.Turtle()secHand.shape("secHand")minHand = turtle.Turtle()minHand.shape("minHand")hurHand = turtle.Turtle()hurHand.shape("hurHand")for hand in secHand, minHand, hurHand:hand.shapesize(1, 1, 3)hand.speed(0)# 建立输出文字Turtleprinter = turtle.Turtle()# 隐藏画笔的turtle形状printer.hideturtle()printer.penup()def SetupClock(radius):# 建立表的外框turtle.reset()turtle.pensize(7)for i in range(60):Skip(radius)if i % 5 == 0:turtle.forward(20)Skip(-radius - 20)Skip(radius + 20)if i == 0:turtle.write(int(12), align="center", font=("Courier", 14, "bold"))elif i == 30:Skip(25)turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))Skip(-25)elif (i == 25 or i == 35):Skip(20)turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))Skip(-20)else:turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))Skip(-radius - 20)else:turtle.dot(5)Skip(-radius)turtle.right(6)def Week(t):week = ["星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"]return week[t.weekday()]def Date(t):y = t.yearm = t.monthd = t.dayreturn "%s %d%d" % (y, m, d)def Tick():# 绘制表针的动态显示t = datetime.today()second = t.second + t.microsecond * 0.000001minute = t.minute + second / 60.0hour = t.hour + minute / 60.0secHand.setheading(6 * second)minHand.setheading(6 * minute)hurHand.setheading(30 * hour)turtle.tracer(False)printer.forward(65)printer.write(Week(t), align="center",font=("Courier", 14, "bold"))printer.back(130)printer.write(Date(t), align="center",font=("Courier", 14, "bold"))printer.home()turtle.tracer(True)# 100ms后继续调用tickturtle.ontimer(Tick, 100)def main():# 打开/关闭龟动画,并为更新图纸设置延迟。turtle.tracer(False)Init()SetupClock(160)turtle.tracer(True)Tick()turtle.mainloop()if __name__ == "__main__":main()

运动炫彩小球

效果

在这里插入图片描述

代码

import turtle
import random# 设置窗口
window = turtle.Screen()
window.title("彩色小球反弹程序")
window.bgcolor("white")
window.setup(width=800, height=600)
turtle.tracer(False)
balls = []# 创建小球类
class Ball(turtle.Turtle):def __init__(self, color):super().__init__()self.shape("circle")self.color(color)self.penup()self.speed(0)self.dx = random.uniform(0.8,1.2) * random.choice([-1, 1])  # 随机初始x速度self.dy = random.uniform(0.8,1.2)* random.choice([-1, 1])  # 随机初始y速度def move(self):self.setx(self.xcor() + self.dx)self.sety(self.ycor() + self.dy)# 碰撞检测if self.xcor() > 380 or self.xcor() < -380:self.dx *= -1if self.ycor() > 280 or self.ycor() < -280:self.dy *= -1# 创建十个小球
ball_colors = ["red", "blue", "green", "purple", "orange", "pink", "cyan", "yellow", "magenta", "brown"]for color in ball_colors:ball = Ball(color)balls.append(ball)# 主循环
while True:for ball in balls:ball.move()turtle.update()# 关闭窗口
window.bye()

更多效果见视频:https://www.bilibili.com/video/BV1Pm4y1H7Tb/

结语

在本文中,我们介绍了Python中令人兴奋的Turtle库,它为编程和艺术创作提供了全新的可能性。无论您是初学者还是有经验的开发者,Turtle库都是一个值得尝试的工具。通过简单的代码,您可以创造出独特的图形、艺术作品和动画。现在,动起手指,开始您的创意绘图之旅吧!

希望本视频能够帮助你对Turtle库有一个初步的了解。如果您想要深入学习和探索更多高级特性,不妨查阅Turtle库的官方文档以及更多的教程资源。

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

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

相关文章

【微服务技术一】Eureka、Nacos、Ribbon(配置管理、注册中心、负载均衡)

微服务技术一 技术栈图一、注册中心Eureka概念&#xff1a;搭建EurekaServer服务注册服务发现&#xff08;消费者对提供者的远程调用&#xff09; 二、Ribbon负载均衡负载均衡的原理&#xff1a;LoadBalanced负载均衡的策略&#xff1a;IRule懒加载 三、Nacos注册中心Nacos的安…

elementplus select选择框自动展开方法

select选择器下拉框自动展开显示 // 通过:name的方法可以从ref里面拿到当前选择框绑定的值来做判断 //&#xff08;仅针对于循环出来的多个选择框的情况下&#xff09; <el-select v-model"value" placeholder"Select"><el-optionref"selec…

什么是单例模式

什么是单例模式 文章目录 什么是单例模式1. 单例(单个的实例)2. 单例模式应用实例3. 饿汉式 VS 懒汉式 1. 单例(单个的实例) 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一…

使用 useEffect 和 reactStrictMode:优化 React 组件的性能和可靠性

使用useEffect和React.StrictMode是一种优化React组件性能和可靠性的常见做法。下面是关于如何使用这两个特性的示例&#xff1a; import React, { useEffect } from react;function MyComponent() {useEffect(() > {// 在组件挂载/更新时执行的副作用代码// 可以进行数据获…

nginx介绍

Nginx是什么&#xff1f; Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力确实在同类型的网页服务器中表现较好&#xff0c;中国大陆使用ng…

android wifi扫描 framework层修改扫描间隔

frameworks/opt/net/wifi/service/java/com/android/server/wifi/ScanRequestProxy.java 这个也就是说前台应用可以在120s(2分钟) 扫描 4 次 * a) Each foreground app can request a max of* {link #SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS} scan every* {l…

08-微信小程序视图层

08-微信小程序视图层 文章目录 视图层 ViewWXML数据绑定列表渲染条件渲染模板引用importimport 的作用域include WXSS尺寸单位样式导入内联样式选择器全局样式与局部样式 WXS注意事项页面渲染数据处理 视图层 View 框架的视图层由 WXML 与 WXSS 编写&#xff0c;由组件来进行…

http库 之 OKHttpUtil

源码位置 方便实用&#xff0c;个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…

改进YOLO系列:2.添加ShuffleAttention注意力机制

添加ShuffleAttention注意力机制 1. ShuffleAttention注意力机制论文2. ShuffleAttention注意力机制原理3. ShuffleAttention注意力机制的配置3.1common.py配置3.2yolo.py配置3.3yaml文件配置1. ShuffleAttention注意力机制论文 论文题目:SA-NET: SHUFFLE ATTENTION …

网络编程(基础)

一、OSI体系结构 ISO&#xff08;国际标准化组织&#xff09;制定了一个国际标准OSI&#xff08;开放式通讯系统互联参考模型&#xff09;&#xff0c;对通讯系统进行了标准化。 定义了7层模型&#xff1a; 二、TCP/IP协议介绍 OSI模型是一个理想化的模型已经很少使用&#x…

ElasticSearch DSL语句(bool查询、算分控制、地理查询、排序、分页、高亮等)

文章目录 DSL 查询种类DSL query 基本语法1、全文检索2、精确查询3、地理查询4、function score &#xff08;算分控制&#xff09;5、bool 查询 搜索结果处理1、排序2、分页3、高亮 RestClient操作 DSL 查询种类 查询所有&#xff1a;查询所有数据&#xff0c;一般在测试时使…

耗资170亿美元?三星电子在得克萨斯州建设新的半导体工厂

据报道&#xff0c;三星电子在得克萨斯州泰勒市建设的新的半导体工厂预计将于2024年下半年投入运营。这座工厂将成为三星电子在美国的第二座芯片代工厂&#xff0c;与位于得克萨斯州奥斯汀市的第一座工厂相距不远。 此次投资将耗资约170亿美元&#xff0c;显示了三星电子在半导…

Slingshot | 细胞分化轨迹的这样做比较简单哦!~(一)

1写在前面 今天是医师节&#xff0c;祝各位医护节日快乐&#xff0c;夜班平安&#xff0c;病历全是甲级&#xff0c;没有错误。&#x1f970; 不知道各位医师节的福利是什么&#xff01;&#xff1f;&#x1f602; 我们医院是搞了义诊活动&#xff0c;哈哈哈哈哈哈哈。&#x1…

C# 图像处理之灰色图转化为RGB图像

咨询通义千问的“C# 图像处理之灰色图转化为RGB图像”结果&#xff0c;看看如何&#xff1a; 在C#中&#xff0c;可以使用Image类来处理图像。要将灰色图像转换为RGB图像&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.创建一个灰色图像对象。 Image grayImage Imag…

Python可视化在量化交易中的应用(16)_Seaborn热力图

Seaborn中热力图的绘制方法 seaborn中绘制热力图使用的是sns.heatmap()函数&#xff1a; sns.heatmap(data,vmin,vmax,cmap,center,robust,annot,fmt‘.2g’,annot_kws,linewidths0,linecolor‘white’,cbar,cbar_kws,cbar_ax,square,xticklabels‘auto’,yticklabels‘auto’…

Linux 进程间通信——消息队列

一、消息队列的原理 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型&#xff0c;接收进程可以独立接收含有不同类型值得数据库。 消息实际上是一个数据块&#xff0c;这个数据块是一个结构体&#xff0c;结构体由自己命名。消…

Aurix TC3xx系列MCU ResourceM模块配置(多核资源分配)

文章目录 1 前言2 配置方法 >>返回总目录<< 1 前言 为减轻主核的负载率或者平衡各个核的资源分配&#xff0c;通常需要把一些MCU内部资源分配到从核上&#xff0c;在EB tresos工具中&#xff0c;通过ResourceM模块实现多核资源分配。 2 配置方法 ResourceMMaste…

mysql数据传输到mssql

一、找开Navicat Premium 12 此时目标数据库会创建一个同名的表

CSS3 -- mix-blend-mode属性详解

一&#xff1a;简介 在上篇文章中&#xff0c;我们利用css的mix-blend-mode属性做了一个简单的文字颜色自适应背景颜色的效果&#xff0c;这篇文章我来解释一下这个属性的用法以及一些简单的案例。 二&#xff1a;介绍 mix-blend-mode 是一种 CSS 属性&#xff0c;它定义了一…

在 Spring Boot 中使用 OpenAI ChatGPT API

1、开始咯 我们来看看如何在 Spring Boot 中调用 OpenAI ChatGPT API。 我们将创建一个 Spring Boot 应用程序&#xff0c;该应用程序将通过调用 OpenAI ChatGPT API 生成对提示的响应。 2、OpenAI ChatGPT API 在开始具体讲解之前&#xff0c;让我们先探讨一下我们将在本教…