python代码画樱花怎么运行,python代码画樱花源代码

大家好,小编为大家解答python代码画樱花运行不出来的问题。很多人还不知道python代码画樱花怎么运行,现在让我们一起来看看吧!


看到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) # 6
        t.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) # 6
        t.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 主要算法

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

  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) # 6
        t.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=i
        green=i
        blue=i
        t.color(red,green,blue)#调色
        t.up()
        y=4*i
        t.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 pygame

def 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=i
        green=i
        blue=i
        t.color(red,green,blue)#调色
        t.up()
        y=4*i
        t.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()

下载链接

点我就行

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值