首页 > 其他分享 >巧用AI工具,为大家送去中秋节祝福

巧用AI工具,为大家送去中秋节祝福

时间:2024-09-17 12:20:45浏览次数:3  
标签:turtle draw 中秋节 AI tt th 90 fill 巧用

一、前言

Python中包含多种画图模块,包括matplotlib、pygame、Pillow(PIL)、pyplot、PycAIro、Pyglet等。matplotlib 是最为著名和功能强大的数据可视化库,它不仅能够创建静态、交互式和动态的图表,而且支持多种图形界面工具包,如Tkinter、wxPython等,广泛应用于科学计算领域。那么对于广泛使用的turtle小海龟模块大家是否熟悉呢?本文就带大家介绍一下turtle的用法。Python中包含多种画图模块,包括matplotlib、pygame、Pillow(PIL)、pyplot、PycAIro、Pyglet等。matplotlib 是最为著名和功能强大的数据可视化库,它不仅能够创建静态、交互式和动态的图表,而且支持多种图形界面工具包,如Tkinter、wxPython等,广泛应用于科学计算领域。那么对于广泛使用的turtle小海龟模块大家是否熟悉呢?本文就带大家介绍一下turtle的用法。

二、turtle库概述

1.turtle库概述

在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图海龟绘图(Turtle Graphics)。后来被移植到各种高级语言中,Python内置了turtle,基本上100%复制了原始的Turtle Graphics的所有功能。

2.turtle库功能

是python的标准库之一;属于入门级的图形绘制函数库。turtle库提供了一个绘图的海龟机器人,海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形;海龟由程序控制,可以使用Python代码控制海龟机器人的移动和动作,可以自由改变颜色、方向宽度等,从而实现绘制图形的功能。

turtle库基本操作

1.turtle库使用

 (1)引入库

 使用前需先引入库,可以使用 from turtle import * 或者 import turtle。前者使用方法不需要加 turtle,后者需要加turtle。     

(2)创建图形窗口

Turtle是一个图形库,这意味着我们需要创建一个单独的窗口(屏幕)来执行每个绘图命令。我们可以通过为它初始化一个变量来创建这个屏幕。变量可以用来存储程序中使用的信息。在为变量赋值时初始化变量。不同于常量,变量可以在程序执行期间多次更改。

(3)变量初始化

s = turtle.getscreen()

初始化变量t。其中Turtle()是turtle库所封装的一个类,提供了许多有用的接口,这里我们对其进行实例化。

t = turtle.Turtle()

现在我们已经具备了一块屏幕和一只海龟画笔。想象一下,屏幕好比是一块画布,而海龟就是一支笔,我们可以让海龟在屏幕上移动。

(4)方向移动操作

海龟笔可以朝四个方向移动,对应的编程指令对应如下:

指令              编程                 等价缩写

-------------------------------------------

前进(Forward)  —— t.right(dist)    —— t.rt(dist)

后退(Backward) —— t.forward(dist)  —— t.fd(dist)

向左(Left)     —— t.left(dist)     —— t.lt(dist)

向右(Right)    —— t.backward(dist) —— t.bk(dist)

2.简单图形绘制

t.fd(100)

t.rt(90)

t.fd(100)

t.rt(90)

t.fd(100)

t.rt(90)

t.fd(100)

(1)改变线条及颜色填充

当我们第一次打开一个新屏幕时,海龟开始是一个黑色的图形,并用黑色墨水绘制。为此,我们可以做两件事情:

  1. 改变海龟的颜色:将改变填充的颜色;
  2. 改变钢笔的颜色:将改变轮廓或墨水的颜色。

可以选择这两种。在改变颜色之前,增大海龟的大小,以帮助您更清楚地看到颜色差异。输入以下代码

t.shapesize(3,3,3)

现在,要改变海龟(或填充)的颜色,只需调用fillcolor

t.begin_fill()

t.fd(100)

t.lt(120)

t.fd(100)

t.lt(120)

t.fd(100)

t.end_fill()

(2)设置绘图速度

海龟通常以常规的速度移动。当我们想减少或增加速度以使海龟移动得更慢或更快,那么便可以通过输入以下命令来实现:

t.speed(1)

t.forward(100)

t.speed(10)

t.forward(100)

2.turtle主要指令介绍

主要画笔控制指令如下:

四、turtle库应用实例

利用turtle库的一些 画笔运动命令、控制命令绘制简单的图形,放上字符串就可以实现图文并茂的效果,还可以搭配一些背景音乐,主函数代码如下:

import turtle
import time
import random  # 导入 random 库
import turtle  # 导入 turtle 库
import random
#import pygame
#from musicpl import*#导入我们生成临时音乐音乐的库,如果不需要临时生成音乐,可删除这段代码
#file = '2.mp3' #自己需要的音乐文件
#pygame.mixer.init()
#track = pygame.mixer.music.load(file)
#pygame.mixer.music.play(loops=-1)#循环播放音乐
ts = turtle.Turtle()#顶端祝福语
ty = turtle.Turtle() #月亮
tx = turtle.Turtle()  #星星
tt = turtle.Turtle() #树
th = turtle.Turtle() #房子
tths = turtle.Turtle() #诗
tend = turtle.Turtle() #结束语
tlx = turtle.Turtle() #流星
tlx.hideturtle()
ts.hideturtle()
ty.hideturtle()
tx.hideturtle()
tt.hideturtle()
th.hideturtle()
tths.hideturtle()
tend.hideturtle()
#tend.hideturtle()
turtle.colormode(255)  # 设置 RGB 色彩模式
turtle.bgcolor(255, 255, 255)

turtle.Screen().tracer(0,0)
turtle.Screen().screensize(1000, 800)
turtle.Screen().bgcolor("black")


def random_star():
    tx.penup()
    tx.color("white", "white")

    x = random.randint(-1000, 1000)
    y = random.randint(-800, 800)

    dot_size = random.random()*3

    tx.goto(x, y)
    tx.dot(dot_size)


for _ in range(1000):
    random_star()

turtle.Screen().tracer(1, 0)
turtle.hideturtle()

s1 = '中秋节快乐' 
s2 = ['暮', '云', '收', '尽', '溢', '清', '寒']
s3 = ['银', '汉', '无', '声', '转', '玉', '盘']
s4 = ['此', '生', '此', '夜', '不', '长', '好']
s5 = ['明', '月', '明', '年', '何', '处', '看']
s6 = '祝大家中秋快乐月圆梦圆阖家团圆!'

#圆的函数
def yuan():

    # 调整画圆的坐标
    ty.penup()
    ty.goto(0, -220)
    ty.pendown()

    # 绘制圆形
    ty.color((255, 215, 0))
    ty.begin_fill()
    ty.circle(200)
    ty.end_fill()


# 设置字体颜色及朝向
ts.color((245, 245, 245))
ts.setheading(0)

# 第一行祝福语
ts.penup()
ts.color("Gold")
ts.goto(-170, 220)
ts.pendown()
ts.write(s1, font=('STKaiti', 50, 'bold'))

#画诗的函数
def draw_shi(s,x,y):
    for i in range(len(s)):
        tths.penup()
        tths.color("white")
        tths.goto(x, y-i*50)
        tths.pendown()
        tths.write(s[i], font=('STKaiti', 30, 'bold'))

#画房子窗户的函数
def draw_home_chuang():
    th.pencolor("#FFD700")
    th.right(90)
    th.pendown()
    for i in range(4):
        th.forward(35)
        th.right(90)
    th.penup()

#画房子的函数
def draw_home():
    th.penup()
    th.pensize(5)
    th.pencolor("#FF6347")
    th.goto(-120, -150)
    th.pendown()
    th.fillcolor("#FF6347")
    th.begin_fill()
    for i in range(2):
        th.forward(180)
        th.right(90)
        th.forward(240)
        th.right(90)
    th.end_fill()

    th.fillcolor("#C76114")
    th.begin_fill()
    th.penup()
    th.pencolor("#C76114")
    th.goto(-140, 20)
    th.right(90)
    th.pendown()
    th.forward(280)
    th.left(110)
    th.forward(60)
    th.left(70)
    th.forward(239)
    th.left(70)
    th.forward(60)
    th.end_fill()

    th.fillcolor("#A0522D")
    th.begin_fill()
    th.pencolor("#A0522D")
    th.left(20)
    th.forward(6)
    th.left(90)
    th.forward(280)
    th.left(90)
    th.forward(6)
    th.end_fill()

    th.penup()
    th.fillcolor("#FFFFFF")
    th.begin_fill()
    th.goto(-100, -10)
    draw_home_chuang()
    th.end_fill()

    th.setheading(90)


    th.goto(60, -10)
    th.fillcolor("#FFFFFF")
    th.begin_fill()
    draw_home_chuang()
    th.end_fill()

# 画树的函数
def draw_tree(length):
    if length > 20:
        tt.speed(100)
        tt.color((128, 128, 128))
        tt.pensize(length / 10)
        tt.forward(length)
        angle = random.randint(10, 30)
        number = random.randint(5, 15)
        tt.right(angle)
        draw_tree(length - number)
        tt.left(angle * 2)
        draw_tree(length - number)
        tt.right(angle)
        tt.backward(length)
    else:
        tt.color((50, 205, 50))
        tt.begin_fill()
        tt.circle(8, 90)
        tt.left(90)
        tt.circle(8, 90)
        tt.left(90)
        tt.end_fill()
        tt.color((0, 100, 0))


yuan()
# 调整画图案的坐标
tt.setheading(90)
tt.penup()
tt.goto(0, -220)
tt.pendown()

# 画出图案
turtle.Screen().tracer(1, 3)#第一个参数为开关动画,第二个参数为速度,值越小速度越快
draw_tree(75)
turtle.Screen().tracer(1, 7)
draw_shi(s2, 210, 90)
draw_shi(s3, 260, 90)
time.sleep(1.6)
tt.clear()
tths.clear()
turtle.Screen().tracer(0, 0)
for _ in range(1000):
    random_star()
turtle.Screen().tracer(1, 5)
th.setheading(90)

draw_home()
turtle.Screen().tracer(1, 7)
draw_shi(s4, 200, 90)
draw_shi(s5, 250, 90)
turtle.Screen().tracer(1, 5)
time.sleep(1.6)
tths.clear()
th.clear()
ts.clear()

#结束语函数
tend.goto(-110, 0)
def end(a,b):
    turtle.tracer(False)
    tend.pencolor('#0000FF')
    for i in range(30):
        tend.write(s6[a:b], font=('STKaiti', i+1, 'bold'))
        tend.clear()
    time.sleep(1.8)
    turtle.update()


end(0,3)
end(3,7)
end(8,16)
end(17,24)

tend.penup
tend.goto(-150, -10)
tend.pencolor("red")
tend.write("中秋佳节", font=('STKaiti', 60, 'bold'))
tend.goto(-150, -60)
tend.pencolor("blue")
tend.write("制作人:Gifted spider", font=('STKaiti', 20, 'bold'))
turtle.tracer(False)
tlx.pencolor('white')
tlx.right(135)

#画流星函数
def draw_meteor():
    for i in range(5):
        tlx.pensize(i+1)
        tlx.fd(10)
    turtle.update()

while True:
    tlx.penup()
    tlx.goto(random.randint(-100, 300), 300)
    tlx.pendown()
    for i in range(10):
        draw_meteor()
        tlx.clear()
        time.sleep(0.07)
pygame.mixer.music.stop()
turtle.done()

运行过程中由于是随机取数生成轨迹,每个人的运行效果不太一样。

本地运行效果如下:

五、总结

以上就是今天要讲的内容,本文仅仅简单介绍了turtle库的基本使用,turtle库提供了能使我们快速便捷地进行图形绘制的方法,大家可以查阅相关文档进行深入学习。

标签:turtle,draw,中秋节,AI,tt,th,90,fill,巧用
From: https://blog.csdn.net/maohaofei/article/details/142262955

相关文章

  • OrangePi AIPro 华为昇腾芯片高性能测试+AI 应用部署视频目标检测
    OrangePiAIPro华为昇腾芯片高性能测试+AI应用部署视频目标检测一.OrangePiAIPro[开发板](https://so.csdn.net/so/search?q=开发板&spm=1001.2101.3001.7020)简介1.1简介昇腾AI在线资料1.2主要参数二、开箱展示2.1开箱2.2开发板的接口详情图三、详细开发前准......
  • 文本多语言 AI 摘要 API 数据接口
    文本多语言AI摘要API数据接口文本/文本摘要AI生成文本摘要AI处理/智能摘要。1.产品功能支持多语言摘要生成;支持长文本处理;基于AI模型,持续迭代优化;不存储PDF文件,处理完即释放,保证您的文档安全;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容Ap......
  • Faiss向量数据库
    安装Faiss:......
  • AI小程序有哪些?AI小程序哪个好用?微信小程序AI写作叫什么?免费的ai小程序推荐 ai写作小
    在当今快速发展的数字时代,人工智能已经深入到我们生活的方方面面,成为人们工作、学习与娱乐的重要工具。是否曾经想过尝试将写作、绘画和沟通等多种功能集成到一个应用中?现在,NineAI智能伙伴小程序以其强大的功能和友好的用户体验,为您提供了一站式的AI服务,助您实现创作与交流的......
  • error: rpmdb, failed: BDB1507 Thread died in Berkeley DB library,error(-30973) fro
    rpm数据库错误,一般原因:yum更新等rpm软件安装进程被异常终止[root@49bdfccd7f61~]#yuminstall-yxxxerror:rpmdb:BDB0113Thread/process22858/140222685267712failed:BDB1507ThreaddiedinBerkeleyDBlibraryerror:db5error(-30973)fromdbenv->failchk:BDB0......
  • crewAI-examples
    crewAI-exampleshttps://github.com/crewAIInc/crewAI-examples/tree/mainhttps://docs.crewai.com/getting-started/Start-a-New-CrewAI-Project-Template-Method/#annotations-include markdown_validatorhttps://github.com/fanqingsong/crewAI-examples/tree/main/m......
  • 通过AI大模型现实小红书笔记克隆以及自动化发布
    文章目录前言一、实现思路二、实现步骤1.引入库2.自动登录3.生成笔记4.发布笔记三、界面演示总结前言对于文案小白来说,通过大模型可以轻松帮我们生成各种风格的文案,比如小红书风格的超萌文案。只需要简单几步操作,就能得到让你惊艳的结果。通过自动化的操作,还可以减......
  • Prompt Engineering实战 AI老兵的15条经验与建议
    Author:Jason豪 编写提示时应清晰准确地传达信息。能够明确描述任务和概念至关重要。要愿意快速迭代,连续多次向模型发送提示并检测结果。优秀的提示工程师能够持续对已待优化prompt反复改进。在设计提示时要考虑边界情况和不寻常的场景。思考你的提示在非典型情况下可能会如......
  • 用Python打造互动式中秋节庆祝小程序
    中秋节,这个充满传统韵味的节日,不仅是家人团聚的时刻,也是程序员展示创意的好机会。本文将引导您使用Python创建一个互动式中秋节庆祝小程序,它不仅能够展示节日祝福,还能通过一些简单的特效增加节日气氛。文章目录......
  • 红抖AI助手v2.5.0热点文案一键创作Ai工具,小红书,抖音爆款仿写
    摘要本文介绍了一款适用于Android端的自媒体内容提取工具,该工具支持从多个流行平台提取内容,并具备批量创作功能,旨在提高自媒体创作效率。1.工具概述自媒体批量创作内容提取工具是一款专为自媒体创作者设计的辅助工具,支持从小红书、抖音、微博、哔哩哔哩等平台提取内容,......