首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python爱心光波

  • 25-02-22 09:00
  • 4332
  • 11511
blog.csdn.net

爱心光波

系列文章

序号文章目录直达链接
1浪漫520表白代码http://iyenn.com/rec/1677773.html
2满屏表白代码http://iyenn.com/rec/1676512.html
3跳动的爱心http://iyenn.com/rec/1677774.html
4漂浮爱心http://iyenn.com/rec/1677775.html
5爱心光波http://iyenn.com/rec/1677776.html
6流星雨http://iyenn.com/rec/1677777.html
7满天星http://iyenn.com/rec/1677778.html
8烟花秀http://iyenn.com/rec/1677779.html
9圣诞树http://iyenn.com/rec/1677780.html
10雪花代码http://iyenn.com/rec/1677781.html
11模拟星空http://iyenn.com/rec/1677782.html
12生日蛋糕http://iyenn.com/rec/1677783.html
13樱花树http://iyenn.com/rec/1677784.html
14五彩气球http://iyenn.com/rec/1677785.html
15七彩花朵http://iyenn.com/rec/1677786.html
16恶搞代码http://iyenn.com/rec/1677787.html

文章目录

  • 系列文章
  • 前言
    • Turtle入门
      • 简单案例
      • 入门函数
    • 爱心光波
      • 程序设计
      • 程序分析
  • 尾声

前言

七夕要来啦,博主在闲暇之余创作了一个爱心光波,感兴趣的小伙伴们快来看看吧!(完整代码文末公众号免费领取哦)

Turtle入门

Turtle 是一个简单而直观的绘图工具,它可以帮助你通过简单的命令来创建各种图形。Turtle 最初是一个基于Logo语言的图形库,在Python中,它被作为标准库的一部分提供。

简单案例

下面是一个基本的 Turtle 绘图入门示例:

import turtle
  • 1
  • 创建一个画布窗口
window = turtle.Screen()
  • 1
  • 创建一个画笔(turtle对象)
pen = turtle.Turtle()
  • 1
  • 绘制一个正方形
for _ in range(4):
    pen.forward(100)
    pen.right(90)
  • 1
  • 2
  • 3
  • 结束绘图并关闭画布窗口
turtle.done()
  • 1

在上述示例中,我们首先导入了 turtle 模块,并创建了一个画布窗口对象。然后,我们创建了一个画笔对象,可以使用它来绘制我们想要的图形。
在创建了画笔之后,我们使用循环来绘制一个正方形,通过 pen.forward() 命令向前移动指定的距离(这里是100),通过 pen.right() 命令向右转指定的角度(这里是90度)来改变画笔的方向。
最后,我们调用 turtle.done() 来结束绘图,并关闭画布窗口。
这只是 Turtle 绘图的一个简单入门示例,你可以通过调用不同的命令和方法来绘制各种不同形状的图像,例如线条、圆、多边形等。Turtle 还提供了一些其他方法来控制画笔的颜色、粗细、填充等属性。

入门函数

当你正在使用Turtle绘图时,有一些基本函数可以帮助你移动画笔并绘制各种形状。下面是一些基本的Turtle函数的简介:

  • forward(distance) :向前移动画笔,指定移动的距离(单位为像素)。
  • backward(distance) :向后移动画笔,指定移动的距离(单位为像素)。
  • right(angle) :向右旋转画笔,指定旋转的角度(单位为度)。
  • left(angle) :向左旋转画笔,指定旋转的角度(单位为度)。
  • penup() :抬起画笔,移动时不绘制线条。
  • pendown() :放下画笔,移动时绘制线条。
  • goto(x, y) :将画笔移动到指定的坐标位置(x,y)。
  • setx(x) :将画笔的x坐标设置为指定值。
  • sety(y) :将画笔的y坐标设置为指定值。
  • setheading(angle) :设置画笔的朝向,指定旋转的角度(单位为度)。
  • circle(radius) :绘制一个圆,指定半径。
  • dot(size, color) :绘制一个点,指定大小和颜色。

这些仅仅是Turtle模块中可用的一些基本函数,还有其他更多的函数可以用于绘制各种多边形、填充图形、控制画笔颜色、粗细等。你可以查阅Python官方文档中的Turtle模块部分或其他Turtle相关的教程和示例代码,了解更多关于Turtle绘图的详细功能和用法。

爱心光波

程序设计

import turtle as tu
import random as ra

tu.setup(1.0, 1.0)  # 设置画板大小(小数表示比例,整数表示大小)
tu.screensize(1.0, 1.0)  # 设置屏幕大小
tu.bgcolor('black')  # 设置画布背景颜色
t = tu.Pen()  # 设置画笔
t.ht()  # 隐藏画笔
colors = ['pink', 'hotpink', 'deeppink', 'lightpink']  # 爱心的颜色列表,可以设置自己喜欢的颜色噢
# colors = ['skyblue', 'lightblue', 'blue', 'royalblue'] # 蓝色系
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
class Love():  # 爱心类
    def __init__(self, r):  # 初始化
        self.r = r  # 爱心的半径
        self.x = 0 # 爱心的横坐标
        self.y = 120  # 爱心的纵坐标
        self.color = ra.choice(colors)  # 爱心的颜色
        self.outline = 2 # 爱心的外框大小(可不要)

    def draw(self):  # 画爱心函数,就是用turtle画爱心
        t.pensize(self.outline)
        t.penup()
        t.color(self.color)
        t.goto(self.x, self.y)
        t.pendown()
        # t.begin_fill()
        # t.fillcolor('pink')
        t.setheading(120)
        t.circle(self.r, 195)
        t.fd(self.r * 2.4)
        t.lt(90)
        t.fd(self.r * 2.4)
        t.circle(self.r, 195)
        # t.end_fill()

    def change(self):  # 改变爱心的大小(爱心不断增大)
        if self.r <= 100:
            self.r += 1
        else:
            self.r = 1
            self.x = 0
            self.y = 120
            self.c = ra.choice(colors)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
Loves = []  # 爱心列表
for i in range(200):  # 循环增加爱心
    Loves.append(Love(i+1))
while True:  # 开始画爱心
    tu.tracer(0)
    t.clear()
    for i in range(99):
        Loves[i].draw()
        Loves[i].change()
    tu.update()
tu.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

程序分析

这段代码使用了Python的turtle模块来实现画爱心星星的效果。下面是代码的详细分析:

  • import turtle as tu:导入turtle模块并将其别名为tu。

  • tu.setup(1.0, 1.0):设置画板的大小为1.0倍的屏幕大小。

  • tu.screensize(1.0, 1.0):设置屏幕大小为1.0倍的屏幕大小。

  • tu.bgcolor(‘black’):设置画布的背景颜色为黑色。

  • t = tu.Pen():创建一个画笔对象。

  • t.ht():隐藏画笔。

  • colors = [‘pink’, ‘hotpink’, ‘deeppink’, ‘lightpink’]:定义了爱心的颜色列表。

  • class Love()::定义了一个名为Love的类,用于绘制爱心。

  • def init(self, r)::类的初始化方法,r为爱心的半径。

  • self.r = r:将传入的半径值赋给对象的半径属性self.r。

  • self.x = 0:设置爱心的横坐标。

  • self.y = 120:设置爱心的纵坐标。

  • self.color = ra.choice(colors):随机选择一个颜色赋给爱心的颜色属性。

  • self.outline = 2:设置爱心的外框大小。

  • def draw(self)::定义了一个画爱心的方法。

  • t.pensize(self.outline):设置画笔的大小为爱心的外框大小。

  • t.penup():抬起画笔。

  • t.color(self.color):设置画笔的颜色为爱心的颜色。

  • t.goto(self.x, self.y):将画笔移动到爱心的起始位置。

  • t.pendown():放下画笔。

  • t.setheading(120):设置画笔的方向为120度。

  • t.circle(self.r, 195):绘制一个半径为self.r的弧形。

  • t.fd(self.r * 2.4):向前移动self.r * 2.4的距离。

  • t.lt(90):向左转90度。

  • t.fd(self.r * 2.4):向前移动self.r * 2.4的距离。

  • t.circle(self.r, 195):绘制一个半径为self.r的弧形。

  • def change(self)::定义了改变爱心大小的方法。

  • if self.r <= 100::如果爱心的半径小于等于100。

  • self.r += 1:爱心的半径加1。

  • else::如果爱心的半径大于100。

  • self.r = 1:将爱心的半径设置为1。

  • self.x = 0:将爱心的横坐标设置为0。

  • self.y = 120:将爱心的纵坐标设置为120。

  • self.c = ra.choice(colors):随机选择一个颜色赋给爱心的颜色属性。

当运行这段代码时,首先会导入turtle模块并将其别名为tu。然后通过调用tu.setup()和tu.screensize()函数设置画板和屏幕的大小。接下来,通过调用t = tu.Pen()创建一个画笔对象并隐藏画笔。然后定义了一个包含四个颜色值的列表colors,用于随机选择爱心的颜色。

接着定义了名为Love的类,用于绘制爱心。类的初始化方法__init__接受一个参数r,表示爱心的半径。在初始化方法中,将传入的半径值赋给对象的半径属性self.r,并设置爱心的初始坐标、颜色和外框大小。类中还定义了一个名为draw的方法,用于绘制爱心。在该方法中,根据对象的属性设置画笔的大小、颜色,并通过一系列的t.goto(), t.setheading(), t.circle()和t.fd()函数绘制了一个具有指定半径、颜色的爱心。

接下来,在主程序中创建了一个空的爱心列表Loves。通过一个for循环,循环200次,每次创建一个爱心对象并将其加入爱心列表。接着进入一个无限循环,开始绘制动画效果。

在循环开始处,通过调用tu.tracer(0)关闭了动画效果,以便实时显示绘制过程。然后调用t.clear()函数清空画布,准备重新绘制。接下来,通过遍历爱心列表中的爱心对象,依次调用对象的draw方法来绘制每个爱心。

这段代码的执行结果是在一个黑色背景的画布上循环绘制不同颜色和大小的爱心。循环过程中,爱心的大小会逐渐增加,颜色也会随机变化。

尾声

祝大家七夕快乐!

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览335305 人正在系统学习中
Want595
微信公众号
获取源码丨商务合作丨交流讨论
注:本文转载自blog.csdn.net的Want595的文章"https://want595.blog.csdn.net/article/details/132311588"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top