python之Turtle 画星星和樱花

  • 1. 樱花
    • 1.1 基础版
      • 1.1.1 基础版效果图
      • 1.1.2 主要算法
      • 1.1.3 完整代码
    • 1.2 升级版
      • 1.2.1 效果图
      • 1.2.2 主要算法
    • 1.2.3 完整代码
  • 2. 繁星
    • 2.1 效果图
    • 2.2 主要算法
    • 2.3 完整代码
  • 下载链接

看到python里面的Turtle库挺好的就来简单的记录以下用它做的效果。
在完成以下的任务大概需要知道以下关于Turtle的操作:

t.color('snow') # 白
t.pensize(10) #设置画笔大小
t.right(20) #画笔右转20度
t.left(10) #画笔左转10度
t.forward(10) #画笔前进10
t.pendown() #画笔落下
t.penup() #画笔抬起
t.hideturtle() # 隐藏画笔
t.backward(150) #后退150
turtle.Screen().screensize(bg='wheat') # 设置屏幕为wheat小麦颜色

1. 樱花

1.1 基础版

1.1.1 基础版效果图

1.1.2 主要算法

# 画樱花的躯干(60,t)
def tree(branchLen,t):sleep(0.0005)if branchLen >3:if 8<= branchLen <=12:if random.randint(0,2) == 0:t.color('snow') # 白else:t.color('lightcoral') # 淡珊瑚色t.pensize(branchLen / 3)elif branchLen <8:if random.randint(0,1) == 0:t.color('snow')else:t.color('lightcoral') # 淡珊瑚色t.pensize(branchLen / 2)else:t.color('sienna') # 赭(zhě)色t.pensize(branchLen / 10) # 6t.forward(branchLen)a = 1.5 * random.random()t.right(20*a)b = 1.5 * random.random()tree(branchLen-10*b, t)t.left(40*a)tree(branchLen-10*b, t)t.right(20*a)t.up()t.backward(branchLen)t.down()

1.1.3 完整代码

import turtle
import random
from turtle import *
from time import sleep# 画樱花的躯干(60,t)
def tree(branchLen,t):sleep(0.0005)if branchLen >3:if 8<= branchLen <=12:if random.randint(0,2) == 0:t.color('snow') # 白else:t.color('lightcoral') # 淡珊瑚色t.pensize(branchLen / 3)elif branchLen <8:if random.randint(0,1) == 0:t.color('snow')else:t.color('lightcoral') # 淡珊瑚色t.pensize(branchLen / 2)else:t.color('sienna') # 赭(zhě)色t.pensize(branchLen / 10) # 6t.forward(branchLen)a = 1.5 * random.random()t.right(20*a)b = 1.5 * random.random()tree(branchLen-10*b, t)t.left(40*a)tree(branchLen-10*b, t)t.right(20*a)t.up()t.backward(branchLen)t.down()# 绘图区域
t = turtle.Turtle()
# 画布大小
w = turtle.Screen()
t.hideturtle() # 隐藏画笔
getscreen().tracer(5,0)
w.screensize(bg='wheat') # wheat小麦
setheading(0)
up()
color('black')
goto(0, 0)
down()
forward(300)t.up()
t.goto(-370, -130)
t.down()
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
# 画樱花的躯干
tree(60,t)
w.exitonclick()

1.2 升级版

1.2.1 效果图

1.2.2 主要算法

可以看到在基础版只有樱花树的图上,我们加上了散落在地上的樱花,然后加上了两个爱心、一个名字以及几句诗。

  1. 加上散落在地上的樱花
# 掉落的花瓣
def petal(m, t):for i in range(m):a = 200 - 400 * random.random()b = 10 - 20 * random.random()t.up()t.forward(b)t.left(90)t.forward(a)t.down()t.color('lightcoral') # 淡珊瑚色t.circle(1)t.up()t.backward(a)t.right(90)t.backward(b)
  1. 画"I"和“LLL”
def name():color('blue')pensize(10)      #'''写“I”中间部分'''setheading(0)go_to(-550,150)right(68)forward(300)pensize(20)setheading(0)     #'''写“I”上下部分'''go_to(-550,150)left(22)forward(10)setheading(0)     go_to(-550,150)right(158)forward(10)setheading(0)     #'''写“I”上下部分'''go_to(-438,-128)left(22)forward(10)setheading(0)     go_to(-438,-128)right(158)forward(10)pensize(10)color('pink')setheading(0)    #写LLL部分go_to(320,0)left(67)forward(150)setheading(0)     go_to(320,0)right(23)forward(40)setheading(0)go_to(420,-50)left(67)forward(150)setheading(0)     go_to(420,-50)right(23)forward(40)setheading(0)go_to(520,-100)left(67)forward(150)setheading(0)     go_to(520,-100)right(23)forward(40)color('red', 'red')
  1. 画心
def big_Circle(size):  #函数用于绘制心的大圆speed(10)for i in range(150):forward(size)right(0.3)def small_Circle(size):  #函数用于绘制心的小圆speed(10)for i in range(210):forward(size)right(0.786)def line(size):speed(1)forward(51*size)def heart( x, y, size):go_to(x, y)left(150)begin_fill()line(size)big_Circle(size)small_Circle(size)left(120)small_Circle(size)big_Circle(size)line(size)end_fill()
  1. 画箭
def arrow():pensize(10)setheading(0)go_to(-400, 0)left(15)forward(150)go_to(339, 178)forward(150)def arrowHead():pensize(1)speed(5)color('red', 'red')begin_fill()left(120)forward(20)right(150)forward(35)right(120)forward(35)right(150)forward(20)end_fill()

1.2.3 完整代码


import turtle
import random
from turtle import *
from time import sleep#主体背景
def go_to(x, y):up()goto(x, y)down()def big_Circle(size):  #函数用于绘制心的大圆speed(10)for i in range(150):forward(size)right(0.3)def small_Circle(size):  #函数用于绘制心的小圆speed(10)for i in range(210):forward(size)right(0.786)def line(size):speed(1)forward(51*size)def heart( x, y, size):go_to(x, y)left(150)begin_fill()line(size)big_Circle(size)small_Circle(size)left(120)small_Circle(size)big_Circle(size)line(size)end_fill()def arrow():pensize(10)setheading(0)go_to(-400, 0)left(15)forward(150)go_to(339, 178)forward(150)def arrowHead():pensize(1)speed(5)color('red', 'red')begin_fill()left(120)forward(20)right(150)forward(35)right(120)forward(35)right(150)forward(20)end_fill()def name():color('blue')pensize(10)      #'''写“I”中间部分'''setheading(0)go_to(-550,150)right(68)forward(300)pensize(20)setheading(0)     #'''写“I”上下部分'''go_to(-550,150)left(22)forward(10)setheading(0)     go_to(-550,150)right(158)forward(10)setheading(0)     #'''写“I”上下部分'''go_to(-438,-128)left(22)forward(10)setheading(0)     go_to(-438,-128)right(158)forward(10)pensize(10)color('pink')setheading(0)    #写LLL部分go_to(320,0)left(67)forward(150)setheading(0)     go_to(320,0)right(23)forward(40)setheading(0)go_to(420,-50)left(67)forward(150)setheading(0)     go_to(420,-50)right(23)forward(40)setheading(0)go_to(520,-100)left(67)forward(150)setheading(0)     go_to(520,-100)right(23)forward(40)color('red', 'red') def main():Screen()pensize(2)color('red', 'pink')getscreen().tracer(30, 0) #取消注释后,快速显示图案heart(200, 0, 1)          #画出第一颗心,前面两个参数控制心的位置,函数最后一个参数可控制心的大小setheading(0)             #使画笔的方向朝向x轴正方向heart(-80, -100, 1.5)     #画出第二颗心arrow()                   #画出穿过两颗心的直线arrowHead()               #画出箭的箭头name()color('black')go_to(-300, -150)write("吟诵诗千卷,", move=False, align="left", font=("宋体", 30, "normal"))go_to(-200, -200)write("才发现最美的诗是你。", move=False, align="left", font=("宋体", 30, "normal"))color('fuchsia')go_to(100, -300)write("From Far Mountain Lovers", move=True, align="left", font=("宋体", 30, "normal"))#背景
# 画樱花的躯干(60,t)
def tree(branchLen,t):sleep(0.0005)if branchLen >3:if 8<= branchLen <=12:if random.randint(0,2) == 0:t.color('snow') # 白else:t.color('lightcoral') # 淡珊瑚色t.pensize(branchLen / 3)elif branchLen <8:if random.randint(0,1) == 0:t.color('snow')else:t.color('lightcoral') # 淡珊瑚色t.pensize(branchLen / 2)else:t.color('sienna') # 赭(zhě)色t.pensize(branchLen / 10) # 6t.forward(branchLen)a = 1.5 * random.random()t.right(20*a)b = 1.5 * random.random()tree(branchLen-10*b, t)t.left(40*a)tree(branchLen-10*b, t)t.right(20*a)t.up()t.backward(branchLen)t.down()# 掉落的花瓣
def petal(m, t):for i in range(m):a = 200 - 400 * random.random()b = 10 - 20 * random.random()t.up()t.forward(b)t.left(90)t.forward(a)t.down()t.color('lightcoral') # 淡珊瑚色t.circle(1)t.up()t.backward(a)t.right(90)t.backward(b)def main_1():# 绘图区域t = turtle.Turtle()# 画布大小w = turtle.Screen()t.hideturtle() # 隐藏画笔getscreen().tracer(5,0)w.screensize(bg='wheat') # wheat小麦main()setheading(0)up()color('black')goto(0,0)down()forward(300)t.up()t.goto(-370,-130)t.down()t.left(90)t.up()t.backward(150)t.down()t.color('sienna')# 画樱花的躯干tree(60,t)# 掉落的花瓣petal(100, t)w.exitonclick()main_1()

2. 繁星

2.1 效果图

过程介绍:首先会播放你预先设置的音乐,然后慢慢进行初始化背景图进行渐变处理,后面然后随机画星星(大家可以在下面的空白处加上自己喜欢的图案或者想说的话,亦或者是诗词)。

2.2 主要算法

  1. 音乐播放模块
def play_music():file = r'.\music.mp3'  # 这里填的是背景音乐的文件路径pygame.mixer.init()track = pygame.mixer.music.load(file)pygame.mixer.music.play(loops=2)
  1. 画渐变的夜空
    turtle库里面没有专门画渐变背景的函数,所以要大家自己实现。(如果有小伙伴想用这个函数的需要注意调一下大小和位置)
#画渐变色的夜空
def dark_sky():t.bgcolor('black')          #首先设置背景色,为黑色t.colormode(255)t.pensize(50)               #笔头粗一点,刷上去颜色for i in range(0,200):      #for循环调整画笔位置和颜色,调出渐变效果red=igreen=iblue=it.color(red,green,blue)#调色t.up()y=4*it.goto(-500,400-y)     #调位置t.down()t.forward(1000)
  1. 画一个颜色随机的星星
def stars(x,y,left_angle,edge_len): #画一个星星R = random.randint(0, 255)G = random.randint(0, 255)B = random.randint(0, 255)t.Screen().colormode(255)t.pencolor(R,G,B)#循环生成RGB颜色t.fillcolor(R,G,B)t.begin_fill()t.speed(0)t.penup()t.goto(x,y)t.begin_fill()t.pendown()t.left(left_angle)for i in range(5):t.forward(edge_len)t.right(144)t.end_fill()t.left(-left_angle)
  1. 循环画300个星星
def draw_star(): # 重复随机画300个星星for i in range(300):x = random.randint(-450, 450)y = random.randint(0, 400)edge_len = random.randint(3, 8)left_angle = random.randint(0, 180)stars(x, y, left_angle, edge_len)
  1. 主函数
def main():play_music() #播放音乐t.hideturtle()t.speed(0)t.screensize(800, 800)t.hideturtle()t.speed(0)dark_sky()  #画背景的渐变颜色t.pensize(1)t.delay(1)draw_star() #开始随机画星星

2.3 完整代码

import turtle as t
import  random
import pygamedef play_music():file = r'.\music.mp3'  # 这里填的是背景音乐的文件路径pygame.mixer.init()track = pygame.mixer.music.load(file)pygame.mixer.music.play(loops=2)#画渐变色的夜空
def dark_sky():t.bgcolor('black')          #首先设置背景色,为黑色t.colormode(255)t.pensize(50)               #笔头粗一点,刷上去颜色for i in range(0,200):      #for循环调整画笔位置和颜色,调出渐变效果red=igreen=iblue=it.color(red,green,blue)#调色t.up()y=4*it.goto(-500,400-y)     #调位置t.down()t.forward(1000)def stars(x,y,left_angle,edge_len): #画一个星星R = random.randint(0, 255)G = random.randint(0, 255)B = random.randint(0, 255)t.Screen().colormode(255)t.pencolor(R,G,B) #循环生成RGB颜色t.fillcolor(R,G,B)t.begin_fill()t.speed(0)t.penup()t.goto(x,y)t.begin_fill()t.pendown()t.left(left_angle)for i in range(5):t.forward(edge_len)t.right(144)t.end_fill()t.left(-left_angle)def draw_star(): # 重复随机画300个星星for i in range(300):x = random.randint(-450, 450)y = random.randint(0, 400)edge_len = random.randint(3, 8)left_angle = random.randint(0, 180)stars(x, y, left_angle, edge_len)def main():play_music() #播放音乐t.hideturtle()t.speed(0)t.screensize(800, 800)t.hideturtle()t.speed(0)dark_sky()  #画背景的渐变颜色t.pensize(1)t.delay(1)draw_star() #开始随机画星星main() #主函数调用
t.exitonclick()

下载链接

点我就行

python之Turtle 画星星和樱花相关推荐

  1. python用turtle画樱花代码_python3实现用turtle模块画一棵随机樱花树

    废话不多说了,直接上代码吧! #!/usr/bin/env python # coding=utf-8 # 画一棵樱花 import turtle import random from turtle ...

  2. 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形

    原标题:使用Python的turtle画炫酷图形 例子一: import turtle t = turtle.Pen() turtle.bgcolor("black") sides ...

  3. python中用turtle画爱心表白

    python中用turtle画爱心表白 运行后的效果图: 下面的代码是在python3.7写的,代码有点长,但却语法简单易懂 代码如下: import turtle str = input('请输入表 ...

  4. python用turtle画月亮_使用Python的turtle画小猪乔治和哆啦 A 梦

    本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...

  5. python画椭圆turtle_python之turtle画蚊香,python用turtle画圆弧,原理:利用turtl

    python之turtle画蚊香,python用turtle画圆弧,原理:利用turtl 原理:利用turtle绘制圆形,并使圆半径逐步增加 代码如下:import turtleturtle.pens ...

  6. python画小猪乔治动画片全集_使用Python的turtle画小猪乔治和哆啦 A 梦!附源码!...

    本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...

  7. 用Python的turtle画一只小猪乔治【刚学python两天,纪念一下】

    本人是新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治[手动比心 by zwx lvmm] [女朋友很喜欢小猪乔治,我在学习python,她说,那你会画小猪乔治了吗? ...

  8. 用Python的turtle画出beautiful四扇风车图

    一.简单了解turtle 1.turtle是什么? 这里引用Python官方文档的片段: 海龟绘图 海龟绘图很适合用来引导孩子学习编程. 最初来自于 Wally Feurzeig, Seymour P ...

  9. python用turtle画出给定图片的图像

    python用turtle画出给定图片的图像.校徽等复杂图像都可以 需要: 1.要画的图片 2.安装好cv和turtle 打开python文件,把想画的图片放到和py文件同目录,代码中默认图片名字为1 ...

最新文章

  1. gcc选项-g与-rdynamic的异同
  2. 搜索github项目stars排名
  3. Tigase XMPP Server的安装
  4. java反射创建对象_java8反射创建对象
  5. C++右值引用的参考
  6. C#中'??'符的使用
  7. C# 的未来:主构造函数
  8. ogg 查看某条更新_明道云Web 6.1更新:日历视图上线
  9. springboot2稳定版本_重要版本Spring Boot 2.3.0发布 - spring.io
  10. python socket多线程 获取朋友列表_python中的(多线程)套接字列表/数组
  11. 苏宁大数据怎么运营_18个“硬核”数据告诉你,苏宁大数据如何火力全开护航618!...
  12. Know more about Oracle Latches
  13. Java 8 中的 java.util.Optional
  14. python3.9新特性_Python 3.9正式版,新特性提前一睹为快
  15. python中的thread_深入理解Python中的ThreadLocal变量(上)
  16. C语言实现matlab的interp2()函数
  17. select完成单线程,多用户
  18. java:eclipse:windows开发环境log4j系统找不到指定的路径
  19. grub4dos 加载 MEMTEST+86
  20. 微信公众号基本配置时token获取失败原因及解决方法

热门文章

  1. Java工程师 操作系统(一) 面试题(Day32)
  2. Python中模拟键盘输入键位编号对照表
  3. c语言中的e英文是什么,e.c.是什么意思
  4. CSS3媒体查询适配不同型号的手机 IphoneX/IphoneXR等
  5. jeecg的autopoi导入EXCEL时去除两端空格
  6. 如何查看端口和杀死进程
  7. 华为手表gt3鸿蒙,华为 Watch3 蓄势待发:全新鸿蒙 UI 语言,支持 eSIM
  8. python hashlib模块安装_python hashlib 模块
  9. 使用pcomm.dll控制道闸开关
  10. css---字体分类