Python:流动爱心图案

2023-11-17

  1. from turtle import *:导入了Python标准库中的turtle模块,并使用通配符*导入了该模块中的所有函数和变量。turtle模块提供了一个绘图窗口和一些绘图函数,可以用来绘制简单的图形。

  2. from math import sqrt:导入了Python标准库中的math模块,并导入了该模块中的sqrt函数。sqrt函数用于计算平方根。

  3. from random import random, randint:导入了Python标准库中的random模块,并导入了该模块中的randomrandint函数。random函数用于生成一个0到1之间的随机浮点数,randint函数用于生成一个指定范围内的随机整数。

导入了几个Python标准库中的模块和函数,以便在代码中使用这些函数来绘制图形和生成随机数。

python中缺库将无法运行,具体操作可以在win+R 输入cmd中 输入 pip install +库名

代码如下:

from turtle import *
from math import sqrt
from random import random, randint
class Heart:
    def __init__(self, x, y, size):
        self.size = size    # 心形大小
        self.speed = size    # 移动速度根据大小变化
        # 设置画笔的统一属性
        t = Turtle(visible=False, shape='circle')
        t.shapesize(size, size)
        color = (1, 1- size/4, 1-size/4)     # 颜色修改为根据大小变化的粉色
        t.pencolor(color)
        t.fillcolor(color)
        t.penup()
        # 克隆一个圆形,设置位置
        self.circle1 = t.clone()
        self.circle1.goto(x-sqrt(size*size*160)/2, y)
        # 克隆第二个圆形,设置位置
        self.circle2 = t.clone()
        self.circle2.goto(x+sqrt(size*size*160)/2, y)
        # 克隆一个正方形,设置位置并旋转角度
        self.square = t.clone()
        self.square.shape("square")
        self.square.setheading(45)
        self.square.goto(x, y-sqrt(size * size * 160)/2)
        # 显示图形
        self.circle1.showturtle()
        self.circle2.showturtle()
        self.square.showturtle()
    def move(self):
        self.circle1.setx(self.circle1.xcor()-self.speed)
        self.square.setx(self.square.xcor() - self.speed)
        self.circle2.setx(self.circle2.xcor() - self.speed)
    def moveTo(self, x, y):
        # 隐藏形状后再移动防止看到移动轨迹
        self.circle1.hideturtle()
        self.circle2.hideturtle()
        self.square.hideturtle()
        # 移动到指定位置
        self.circle1.goto(x - sqrt(self.size * self.size * 160) / 2, y)
        self.circle2.goto(x + sqrt(self.size * self.size * 160) / 2, y)
        self.square.goto(x, y - sqrt(self.size * self.size * 160) / 2)
        # 恢复显示
        self.circle1.showturtle()
        self.circle2.showturtle()
        self.square.showturtle()


width, height = 800, 600
screen = Screen()     # 创建窗口对象
screen.setup(width, height)    # 设置窗口的宽高
screen.delay(0)    # 设置无延时绘画
screen.bgcolor('pink')     # 设置背景颜色为粉色

hearts = []
for i in range(25):
    heart = Heart(width/2 + randint(1, width), randint(-height/2,height/2), random()*3)
    hearts.append(heart)
while True:
    for heart in hearts:
        heart.move()
        if heart.square.xcor() < -width / 2:    # 如果爱心移动出屏幕左侧
            heart.moveTo(width / 2 + randint(1, width), randint(-height/2, height/2))   # 回到右侧随机位置

运行结果如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:流动爱心图案 的相关文章

随机推荐

  • 2023第五届CCPC河南省赛

    2023第五届CCPC河南省赛经历和题解 题目链接 榜单 经历 算法生涯第一场比赛正好是三年以来第一次线下省赛 因为学校不报销 QAQ 我和我们班两个同学三个大一一队跟着学长学姐一队一起自费趁着周六日假期从洛阳跑到郑州打比赛 周六晚上六点十
  • android项目迁移到androidX:类映射(android.support.v4*)

    支持库类 AndroidX 类 android support v4 accessibilityservice AccessibilityServiceInfoCompat androidx core accessibilityservic
  • 开源库uthash第三弹utstack.h

    文章目录 一 简介 1 1 介绍 1 2 源码获取 二 使用方法 2 1 栈头声明 2 2 栈操作 2 3 一个简单的实例 2 4 其他宏 一 简介 1 1 介绍 utstack h中包含了一组动态stack宏 使用起来非常简单 只需要将u
  • BUUCTF 之 [极客大挑战 2019] Havefun(GET 传参)

    BUUCTF 之 极客大挑战 2019 Havefun GET 传参 相关 题解 相关 项目 内容 难度 简单 类型 WEB 靶场 BUUCTF 坐标 Havefun 题解 启动靶机后 映入眼帘的是一只猫 网站首页没有按钮 提示信息等等 遇
  • $(window).load(function() {})和$(document).ready(function(){})的区别

    在我以前的开发中 一般用到javascript 我都是采用jquery的模式 也就是大多数时候 第一行写的是 document ready function 这个时候 不一定要等所有的js和图片加载完毕 就可以执行一些方法 不过有些时候 必
  • STM32 USB Mass Storage 例程调试笔记

    一 问题起因 近来有几个客户反映STM3210E的开发板的USB Mass Storage 例程有点问题 组长安排我来调试 Mass Storage例程在PC上实现两个U盘 一个是SD盘 一个是NAND Flash盘 把程序下载到开发板后
  • [人工智能-深度学习-17]:神经网络基础 - 优化算法的本质是盲人探路或迷雾探险

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 120591591 目录 第1章 los
  • 使用PHPMailer发送邮件

    设置邮箱 所有的主流邮箱都支持 SMTP 协议 但并非所有邮箱都默认开启 您可以在邮箱的设置里面手动开启 第三方服务在提供了账号和密码之后就可以登录 SMTP 服务器 通过它来控制邮件的中转方式 SMTP 服务器认证密码 需要妥善保管 加载
  • 常见(但不常见)单子

    上周 我们研究了monad如何帮助您实现Haskell开发的下一个跃进 我们讨论了runXXXT模式 以及如何使用其余代码中的某些monad作为通用网关 但是有时它也有助于回到基础知识 实际上 我花了很长时间才真正掌握如何使用几个基本的mo
  • JUnit->Mockito->PowerMock->持续更新

    最近在公司做需求 要求开发需要有相应的单元测试代码 第一次做单测相关的知识 就在这做一篇总结 一 JUnit JUnit是Java最基础的测试框架 主要的作用就是断言 方法名 方法描述 assertEquals 断言传入的预期值与实际值是相
  • 求救,在频域分析语音信号谐波成分的方法有哪些

    求救 在频域分析语音信号谐波成分的方法有哪些 有一段语音信号 经过FFT之后变换到频域 目前想在频域分析其谐波成分 并找到谐波能量最大的K次谐波 matlab里可以用仿真powergui生成仿真的信号 然后FFT分析得到各谐波成分及能量 但
  • vi命令修改文件及保存的使用方法

    简单点 vi文件名 按 I 进入insert模式 可以正常文本编辑 编辑好之后按 esc 退出到 命令模式 再按 shift 进入 底行模式 按 wq 保存退出 还一种 把文件复制到本地修改好上传上去 vi编辑器是所有Unix及Linux系
  • 每日一练:用java打印水仙花数

    需求 在控制台输出所有的 水仙花数 解释 什么是水仙花数 水仙花数 指的是一个三位数 个位 十位 百位的数字立方和等于原数 例如153 3 3 3 5 5 5 1 1 1 153 思路 获取所有的三位数 准备进行筛选 最小的三位数为100
  • cp1.php969.net,eDrawings

    OzsgSFNGIFYxMy4wNSAKSQAAAABCAGDlUL0Spb29AAAAAGXlUD13vp89x0rNPVp42uy9B0AUSdMw3LMzsxHYJeec8 6SdoGVJagoiAFBMAOimNDDhBHMeqen
  • 怎么批量安装服务器的操作系统,批量安装服务器操作系统

    弹性云服务器 ECS 弹性云服务器 Elastic Cloud Server 是一种可随时自助获取 可弹性伸缩的云服务器 帮助用户打造可靠 安全 灵活 高效的应用环境 确保服务持久稳定运行 提升运维效率 三年低至5折 多种配置可选了解详情
  • 数组(持续更新后续)

    目录 数组定义 数组的组成部门 案例一 案例二 案例三 增强for循环 语法结构 执行规律 注意 案例 案例 案例 数组定义 变量 存储数据的空间 装数据的容器 变量中只能存储一个数据 数组 存储数据的空间 装数据的容器 数组中可以存储多个
  • sojson JS 逆向一 (简单版)

    背景 现在市面上很多web网页都是使用sojson加密的 所以 爬虫小伙伴对sojson的学习迫在眉睫 js 加密源码 var a b function w d w info 这是一个一系列js操作 d warning 如果您的JS里嵌套了
  • 202206-3 角色授权

    第三题 题干 角色授权 include
  • svn更新有问题svn: The working copy at' ' is too old

    SVN the working copy needs to be upgraded svn 低版本SVN检出代码 高版本SVN提交不了解决方法如下 项目右键 team Upgrade 即可 如下图 参考URL https blog csdn
  • Python:流动爱心图案

    from turtle import 导入了Python标准库中的turtle模块 并使用通配符 导入了该模块中的所有函数和变量 turtle模块提供了一个绘图窗口和一些绘图函数 可以用来绘制简单的图形 from math import s