今天是六一儿童节~身为我们班的信息担当的我为我们班同学准备了一个小惊喜,你确定不来看看吗(turtle库实现:送给同学们一朵小红花)

news2024/11/26 12:00:09

目录

一.实现思路

二.花朵的实现方法

 三.花朵的茎实现方法

四.画出第一片叶子的方法

五.画出第二片叶子的方法

六.如何设置页面主体

结尾


今天呢,也是一年一度的六一儿童节(虽然各位大佬可能不过,但是我还是要过的),在我们六年级过的时候,我们班同时也举行了毕业典礼,为了这个毕业典礼,我写了一晚上代码(这就是昨天没更新的原因),也就写了两个小时就写完了,所以今天我们用Python里的turtle库(随便写的,要不然我怎么会写turtle库呢)实现一个小红花吧送给我们班的同学们~(千万不要让老师知道我把电脑控屏软件给破解了,极域电子教室,某些人别跟信息老师说)

也是非常的水~ 

一.实现思路

  • 第一步:画出花朵主体
  • 第二步:画出花朵的茎
  • 第三步:画出第一片叶子
  • 第四步:画出第二片叶子
  • 第五步:设置画面主体

二.花朵的实现方法

先来看一眼效果:

首先我们定义一个函数,叫做flower,然后我们就要用这个函数画花瓣了 

我们首先来画花瓣的弧,我们先求出弧的长度,即

2*\pi *r*\left | angle \right |/360

这时我们就可以求出要多少个才能画出这个大花瓣,即:

int(arc_length / 4) + 1

这个是所有弧的长度,要想知道每一个弧的长度,我们就要这样:

step_length = arc_length / n

这时每一个角的度数就也可以求了

float(angle) / n

现在我们正式画花瓣。首先这个笔在起步时要慢,因为这是一个弧形,并且要慢慢拐弯,也就是如下代码:

def p_line(t, n, length, angle):

    for i in range(n):

        t.fd(length)

        t.lt(angle)

 t.lt(step_angle/2)

    p_line(t, n, step_length, step_angle)

    t.rt(step_angle/2)

注意,如上代码只会画半个弧,要想画成一个花瓣,我们就可以使用一个for循环来控制

for i in range(2):

        arc(t, r, angle)

        t.lt(180-angle)

整理一下,以下是完整画花瓣的代码:

import turtle
import math
def p_line(t, n, length, angle):


    for i in range(n):

        t.fd(length)

        t.lt(angle)


def arc(t, r, angle):

    arc_length = 2 * math.pi * r * abs(angle) / 360

    n = int(arc_length / 4) + 1

    step_length = arc_length / n

    step_angle = float(angle) / n

 


    t.lt(step_angle/2)

    p_line(t, n, step_length, step_angle)

    t.rt(step_angle/2)

def petal(t, r, angle):

    for i in range(2):

        arc(t, r, angle)

        t.lt(180-angle)

 

def flower(t, n, r, angle, p):

    for i in range(n):

        petal(t, r, angle)

        t.lt(p/n)

 

 

def main():

 

    window= turtle.Screen() #creat a screen

    window.bgcolor("white")

    window.title("draw a flower")

    lucy= turtle.Turtle()

    lucy.shape("turtle")

    lucy.color("red")

    lucy.width(3)

    #lucy.speed(10)

    flower(lucy, 7, 60, 100, 360)
main()

 三.花朵的茎实现方法

 首先我们可以设置画笔颜色,用pen.color语句

注意,此时我们的笔是朝向右侧的,所以我们需调整一下方向,用pen.right语句

最后我们画一条直线就行,用pen.forward语句

代码如下:

lucy.color("brown")

    lucy.rt(90)

    lucy.fd(200)

四.画出第一片叶子的方法

首先我们先来设置一下笔的方向,粗细和颜色

    lucy.width(1)

    lucy.rt(270)

    lucy.color("green")

 然后我们写一下画叶子的函数

def leaf(t, r, angle, p):

    t.begin_fill() 

    t.down()

    flower(t, 1, r, angle, p)

    t.end_fill()

最后我们再来画一下纹理

lucy.color("black")

    lucy.fd(30)

    lucy.lt(180)

    lucy.fd(30)

这样就完事了

五.画出第二片叶子的方法

因为这里使用的是函数,所以和上面大相径庭,大家可以看看

lucy.rt(120)

    lucy.color("green")

    leaf(lucy, 40, 80, 180)

    lucy.color("black")

    lucy.rt(140)

    lucy.fd(30)

    lucy.ht() 

六.如何设置页面主体

其实就是固定的框架,大家看一下就行

其实就是一些背景颜色,弹窗名字,设置画笔的宽度,颜色,样式等

window.bgcolor("white")

    window.title("draw a flower")

    lucy= turtle.Turtle()

    lucy.shape("turtle")

    lucy.color("red")

    lucy.width(3)

结尾

以下是完整代码

import turtle
import math

def p_line(t, n, length, angle):
    for i in range(n):

        t.fd(length)

        t.lt(angle)

def polygon(t, n, length):

    angle = 360/n

    p_line(t, n, length, angle)
def arc(t, r, angle):

    arc_length = 2 * math.pi * r * abs(angle) / 360

    n = int(arc_length / 4) + 1

    step_length = arc_length / n

    step_angle = float(angle) / n

    t.lt(step_angle/2)

    p_line(t, n, step_length, step_angle)

    t.rt(step_angle/2)


def petal(t, r, angle):
    for i in range(2):

        arc(t, r, angle)

        t.lt(180-angle)


def flower(t, n, r, angle, p):

    for i in range(n):

        petal(t, r, angle)

        t.lt(p/n)


def leaf(t, r, angle, p):

    t.begin_fill() 

    t.down()

    flower(t, 1, r, angle, p)

    t.end_fill()

def main():


    window= turtle.Screen() 

    window.bgcolor("white")

    window.title("draw a flower")

    lucy= turtle.Turtle()

    lucy.shape("turtle")

    lucy.color("red")

    lucy.width(3)

    #lucy.speed(10)

    flower(lucy, 7, 60, 100, 360)

    lucy.color("brown")

    lucy.rt(90)

    lucy.fd(200)

    lucy.width(1)

    lucy.rt(270)

    lucy.color("green")

    leaf(lucy, 40, 80, 180)

    lucy.rt(140)

    lucy.color("black")

    lucy.fd(30)

    lucy.lt(180)

    lucy.fd(30)

    lucy.rt(120)

    lucy.color("green")

    leaf(lucy, 40, 80, 180)

    lucy.color("black")

    lucy.rt(140)

    lucy.fd(30)

    lucy.ht() 
    window.exitonclick()

main()

祝所有人儿童节快乐~天天开心~

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

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

相关文章

JMeter性能测试零基础完整入门版,视频教程加源码免费看

目录 1. Jmeter简介 2. Jmeter安装 2.1 JDK安装 2.2 JMeter安装 3. 测试实例 3.2 请求参数 3.3 返回结果 4. JMeter脚本编写 4.1 添加线程组 4.2 添加HTTP请求 4.3 添加察看结果树 4.4 添加用户自定义变量 4.5 添加断言 4.6 添加断言结果 4.7 添加聚合报告 5. 执…

Spring Boot如何实现微服务架构中的API网关?

Spring Boot如何实现微服务架构中的API网关? 随着微服务架构的流行,越来越多的企业开始构建自己的微服务系统。在这种情况下,API网关变得尤为重要。API网关是微服务架构中的一个组件,它可以帮助我们管理和路由所有的API请求。Spr…

【LeetCode热题100】打卡第10天:删除链表倒数第N个节点

文章目录 删除链表倒数第N个节点⛅前言🔒题目🔑题解 删除链表倒数第N个节点 ⛅前言 大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目&a…

8. 何为ECC

非对称加密 在我们认知里面,通常说到非对称加密,就会弹出2个词,RSA和ECC,做过对称加密的都非常清楚,RSA其实就是模指运算。用公钥来加密,私钥来解密;私钥签名,公钥验签。但是提到EC…

【数据结构】链表 linked list

一、什么是链表 零散的内存空间存储,由元素和指针组成 二、常用操作 1.原理 access:通过next指针遍历 时间复杂度:O(N) search:通过next指针遍历 时间复杂度:O(N) insert:找个新的内存空间存储新元素…

学习HCIP的day.10

十、对BGP一些情况的总结: 1、路由条目不优特殊情况: 在BGP协议中,存在一种无法优秀的路由条目;假设R4路由表中存在一条非BGP产生的到达5.5.5.5的路由条目,且该条目用于R4与R5建立BGP邻居关系;那么之后R5…

【Linux网络】搭建LNMP架构

搭建LNMP架构 一、编译安装MySQL服务二、安装Nginx服务三、安装配置PHP解析环境四、部署Discuz社区论坛Web应用五、部署博客论坛应用六fpm进程优化 一、编译安装MySQL服务 1.安装MySQL环境依赖包 yum -y install gcc gcc-c ncurses ncurses-devel bison cmake2、创建运行用户 u…

地震勘探基础(三)之地震波的时距曲线

时距曲线 在反射波地震勘探中,一般是在地面激发地面接收,激发点到接受点的距离称为炮间距(offset),用 x x x表示。如果炮间距为0,称为自激自收。 单道接收:激发一次只在一个位置上接收地震波。…

在线ps网页版推荐,让你摆脱安装包的烦恼

在设计领域,Photoshop的地位多年来一直是不可动摇的,其强大的功能可以毫不夸张地说:只有你想不到的,没有PS做不到的。但强大如PS,也有自己的小局限性:处理矢量图相对较弱,更难掌握。今天&#x…

微信小程序——监听页面滑动(一)onPageScroll

微信小程序——手把手教你学会监听页面滑动 知识回调(不懂就看这儿!)场景复现核心干货如何进行页面监听了解onPageScroll实际使用onPageScroll 知识回调(不懂就看这儿!) 知识专栏专栏链接微信小程序专栏ht…

栈和队列高频面试题(必刷): 用队列实现栈 用栈实现队列 实现循环队列 括号匹配

文章目录 用队列实现栈用栈实现队列实现循环队列括号匹配 用队列实现栈 题目描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。 实现 MySt…

新项目 使用 IDEA 搭建后端环境 及 搭建是可能遇到的 问题 及解决方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 新项目 使用 IDEA 搭建后端环境 及 搭建是可能遇到的 问题 及解决方法 前言 提示:这里可以添加本文要记录的大概内容: 新项目 使用 IDEA 搭建后端环…

【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[2]【Matlab代码#36】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始沙丘猫群优化算法2. 改进沙丘猫群算法2.1 非线性自适应参数2.2 Cauchy变异策略2.3 最优邻域扰动策略 3. 部分代码展示4. 仿真结果展示5. 资源获取6. 参考文献 【获取资源请见文章第5节:资源获取】 1.…

华为OD机试真题B卷 Java 实现【光伏场地建设规划】,附详细解题思路

一、题目描述 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源。对每平方公里的土…

主动打包、高效管理的主题工具:逐浪HMS主题大师1.5-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移动主题设计利器

主动打包、高效管理的主题工具:逐浪HMS主题大师1.5-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移动主题设计利器 主动打包:逐浪HMS主题大师1.3-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移…

【经验分享】uniapp项目GIT如何忽略unpackage文件

最近的uniapp项目踩了个坑,就是建完项目,提交代码后,运行发布微信小程序,生成了unpackage里的build文件,这个时候提交总是提交一堆编译后的文件,甚至造成冲突。即使在.gitignore文件中写入忽略unpackage目录…

C++ 小区物业管理系统(QT图形界面)

目录 一、项目介绍 二、项目展示 三、源码分享 一、项目介绍 小区物业管理系统 (一)课题内客 该系统要求建立某小区物业管理系绕,并具有排序﹑查找﹒计算﹑显示等功能,通过此课题,熟练掌握文件﹐指针的各种操作,以及一些算法思…

某内Java课程(整套视频+课件)

某内Java课程 需要整套视频文件(视频课件):(V: t_shopnet) 1 FUNDAMENTALO1 01: 对象和类(上)(6 am.mp4 01: 对象和类(上) (6 pm.mp4 02: 对象和类(下) (3) am .mp4 02: 对象和类(下) (3) pm.mp4 引用类型数组、继承的意义 (上) (3) am.mp403…

SOLIDWORKS流程模拟: 需要多少个CPU核心?

客户经常会问,他们应该为SOLIDWORKS Flow Simulation购买什么工作站,以尽可能快地解决他们的计算流体力学(CFD)问题。遗憾的是,这个问题后面往往有一个无法实现的期望,如 "一切都需要在10分钟内解决&q…

十分钟读懂Stable Diffusion运行原理

AIGC 热潮正猛烈地席卷开来,可以说 Stable Diffusion 开源发布把 AI 图像生成提高了全新高度,特别是 ControlNet 和 T2I-Adapter 控制模块的提出进一步提高生成可控性,也在逐渐改变一部分行业的生产模式。惊艳其出色表现,也不禁好…