python待君有余暇,看春赏樱花,这不得来一场浪漫的樱花旅~

Posted 魔王不会哭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python待君有余暇,看春赏樱花,这不得来一场浪漫的樱花旅~相关的知识,希望对你有一定的参考价值。

🌸 前言

嗨喽~大家好呀,这里是魔王呐 !

半世樱花无碍,缘来过往再生。

在我们看动漫的时候,总少不了被一些唯美的场景所吸引

其中,就有不少樱花的场景,虽然,现在不能在线下看樱花~

但是,我还是能用代码画画来解解馋的(难不倒我)

目录标题

🌸 婆娑红尘苦,樱花自绽放

❀ 一期一会的绚烂·樱花 ❀

点击 蓝色字体 领取源码、解答

每一次运行都会有不一样的结果,不一样的惊喜~

(1)代码展示 🌺

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()


# 掉落的花瓣
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():
    # 绘图区域
    t = turtle.Turtle()
    # 画布大小
    w = turtle.Screen()
    t.hideturtle()  # 隐藏画笔
    getscreen().tracer(5, 0)
    w.screensize(bg='wheat')  # wheat小麦
    t.left(90)
    t.up()
    t.backward(150)
    t.down()
    t.color('sienna')

    # 画樱花的躯干
    tree(60, t)
    # 掉落的花瓣
    petal(200, t)
    w.exitonclick()


main()

(2)效果展示 🌺

(3)小文案 🌺

❀ 樱花即便不被欣赏也会长大悄悄的绽放光芒。

❀ 当满树樱花全部褪去,绿叶浪漫便藏起了花期。

❀ 下一次,一起去看樱花的文案我都想好了:鬼怪心动了。

❀ 一晃两三年,匆匆又初春。绽放的樱花是春天最好的文案。

❀ 遇见你的那天,樱花开满南山。

❀ 把风光交给雾月,把樱花交给春天。

❀ 不必忧愁,不必烦恼,樱花盛开,必将好运连绵。

❀ 富士山终究留不住欲落的樱花,我终究败给了你的温柔。

🌸 樱花开灿如云霞,樱花落满地成诗

❀ 一期一会的绚烂·樱花 ❀

(1) 效果展示 💐

这个也是和上面一样哦~每次运行都是随机的呢

这个我就没发动图拉~

点击 蓝色字体 领取源码、解答

(2)代码展示 💐

点击 蓝色字体 加入交流探讨吖~

import turtle

from random import random
from random import randint


def draw_petal(turtle_obj, flower):
    # 绘制掉落的花瓣
    for i in range(int(flower)):
        # 有正有负就可以让画笔往二个方向走
        x = flower - 4 * flower * random()

        # 花瓣整体宽度(-10, 10)
        y = 10 - 20 * random()

        # 提笔,向前y,左转90,走x,落笔
        turtle_obj.penup()
        turtle_obj.forward(y)
        turtle_obj.left(90)
        turtle_obj.forward(x)
        turtle_obj.pendown()

        # 珊瑚色
        turtle_obj.pencolor("lightcoral")
        # 画圆
        turtle_obj.circle(1)

        # 回到起点
        # 提笔,后退x,右转90,后退y,落笔
        turtle_obj.penup()
        turtle_obj.backward(x)
        turtle_obj.right(90)
        turtle_obj.backward(y)
        turtle_obj.pendown()


# 画树枝部分
def draw_tree(turtle_obj, branch, tree_color):
    # 设置一个最小分支长度
    min_branch = 4

    if branch > min_branch:
        if branch < 8:
            # 以0.5的概率,向左、右分支
            if randint(0, 1) == 0:
                # 左为白色
                turtle_obj.pencolor("snow")
            else:
                # 右为珊瑚色
                turtle_obj.pencolor("lightcoral")
            # 枝干
            turtle_obj.pensize(branch / 2)
        elif 8 <= branch <= 16:
            # 以0.33的概率,分为左、中、右分支
            if randint(0, 2) == 0:
                # 左为白色
                turtle_obj.pencolor("snow")
            else:
                # 中、右为珊瑚色
                turtle_obj.pencolor("lightcoral")
            # 树枝
            turtle_obj.pensize(branch / 4)
        else:
            # 褐色
            turtle_obj.pencolor(tree_color)
            # 细枝
            turtle_obj.pensize(branch / 10)

        # 最开始的树干长度
        turtle_obj.forward(branch)

        # 随机度数因子
        a = 1.5 * random()
        # 顺时针旋转随机角度(030度)
        turtle_obj.right(20 * a)

        # 随机长度因子
        b = 1.5 * random()
        # 往右画,直到画不动为止
        draw_tree(turtle_obj, branch - 10 * b, tree_color)

        # 左转随机角度
        turtle_obj.left(40 * a)
        # 往左画,直到画不动位置
        draw_tree(turtle_obj, branch - 10 * b, tree_color)

        # 右转一定角度
        turtle_obj.right(20 * a)
        # 提笔
        turtle_obj.penup()

        # 递归结束回到起点
        turtle_obj.backward(branch)
        turtle_obj.pendown()


def get_screen(width, height, color, speed):
    # 创建画幕
    screen_obj = turtle.Screen()
    # 画布大小:(width, height),颜色:color
    screen_obj.screensize(width, height, bg=color)
    screen_obj.setup(1.0, 1.0)
    # speed倍加速
    screen_obj.tracer(speed)

    return screen_obj


def trees(tree_num):
    # 颜色
    color = ['brown', 'tan', 'black']

    for j in range(tree_num):
        # 树干颜色
        tree_color = color[randint(0, len(color) - 1)]

        # 画笔大小
        pensize = randint(2, 5)
        # 前进像素
        forward = ((-1) ** pensize) * pensize * randint(20, 50)
        # 后退像素
        if pensize <= 3:
            backward = ((-1) ** pensize) * (5 - pensize) * randint(10, 15)
        else:
            backward = pensize * randint(45, 50)

        # 创建画笔
        turtle_obj = turtle.Turtle()
        # 画笔粗细
        turtle_obj.pensize(pensize)
        # 提笔,向前forward,左转90,backward,落笔
        turtle_obj.penup()
        turtle_obj.forward(forward)
        turtle_obj.left(90)
        turtle_obj.backward(backward)
        turtle_obj.pendown()
        # 画笔颜色:褐色
        turtle_obj.pencolor(tree_color)

        # 枝干粗细
        branch = pensize * 15
        # 落花数
        flowers = branch
        # 第j棵树
        draw_tree(turtle_obj, branch, tree_color)
        # 花瓣
        draw_petal(turtle_obj, flowers)


if __name__ == '__main__':
    # 创建画幕
    my_screen_width = 800
    my_screen_height = 600
    my_screen_color = 'wheat'
    my_screen_speed = 5
    my_screen_obj = get_screen(my_screen_width, my_screen_height,
                               my_screen_color, my_screen_speed,)


    # 樱花树
    # 棵数
    my_tree_num = 10
    trees(my_tree_num)

    # 点击关闭画布
    my_screen_obj.exitonclick()

(3)可修改小效果 💐

这里面枝干是有三个色哒,如果你不喜欢可以修改下图话红圈地方哦~

比如,只留下 black(黑色),删掉其他两种颜色

又或者只留下 tan(棕褐色)

如果,你想要修改树木的数量,那么修改下面这个参数

改变后方的数字即可~

(4)小文案 💐

❀ 十里樱花醉金徽,不负春光不负卿。

❀ 我踏碎万家灯火来寻你,山樱璀璨做聘礼

❀ 我栽一段樱色赠你,好让你不逊色于这人间错落烟火。

❀ 浪漫樱花随风飘落,幻如仙境;爱情不期而遇、绚烂多彩。

❀ 神明把光风交给霁月,把樱花交给春天,把黑夜交给星光,把心跳交给脸红,把你交给我。

🌸 意飞扬的樱花,明媚着一春的柔软

(1)代码展示 🌺

点击 蓝色字体 领取源码、解答

from turtle import *
from random import *
from math import *

def flower(c):
    color(c)
    begin_fill()
    circle(randint(2,4))
    end_fill()
    
def tree(n,l):
    pd()#下笔
    pencolor('sienna')
    pensize(0.7*n)#树枝逐渐变细
    forward(l)#画树枝

    if n>0:
        b = random()*15+10 #右分支偏转角度
        c = random()*15+10 #左分支偏转角度
        d = l*(random()*0.25+0.7) #下一个分支的长度
        #右转一定角度,画右分支
        right(b)
        tree(n-1,d)
        #左转一定角度,画左分支
        left(b+c)
        tree(n-1,d)
        if n<=5:
            flower('lightcoral')
        #转回来
        right(c)
    else:
        #画末端
        flower('pink')

    pu()
    backward(l)#退回

ht()#隐藏turtle
tracer(0,0)
left(90)#左转90pu()#抬笔
backward(300)#后退下移300
tree(10,100)#递归作画
done()

(2)效果展示 🌺

🌸 且听风吟,静待花开

(1)效果展示 🌺

(2)代码展示 🌺

import turtle as t
import random

from copy import deepcopy

brance = 65
BRANCE = 65


def draw_tree(brance):  # 画树枝部分  分支量
    if brance > 4:  # 设置一个最小分支量 可以自己改
        if 8 <= brance <= 16:  # 分支量在这个范围内,画笔大小缩小四倍,画中等细小的树枝
            t.pencolor("red")  # 珊瑚色
            # t.pencolor("green")
            t.pensize(brance / 4)
        elif brance < 8:  # 分支量在这个范围内,画笔大小缩小二倍 , 画细小的树枝
            t.pencolor("red")  # 珊瑚色
            # t.pencolor("green")
            t.pensize(brance / 2)
        else:  # 其他范围内,我们让程序画树干部分
            t.pencolor("Tan")  # 褐色
            t.pensize(brance / 10)  # 缩小支柱

        t.fd(brance)  # 最开始的树干部分
        a = 1.5 * random.random()  # 随机度数因子

        t.right(20 * a)  # 右转随机角度

        b = 1.5 * random.random()  # 随机长度因子
        draw_tree(brance - 10 * b)  # 往右画,直到画不动为止,然后左转随机度数

        t.left(40 * a)  # 左转随机角度
        draw_tree(brance - 10 * b)  # 往左画,直到画不动位置,然后右转随机度数

        t.right(20 * a)  # 右转一定角度

        t.penup()
        t.backward(brance)  # 递归结束回到上一个节点
        t.pendown()


def draw_fallenflower(brance):
    for i in range(150):  # 循环150次 绘制 掉落的花瓣
        a = 250 - 500 * random.random()  # 花瓣整体长度,有正有负就可以让海龟往二个方向走
        b = 10 - 20 * random.random()  # 花瓣整体宽度,正负道理一致,数值可以根据实际输入

        t.penup()  # 抬笔向前随机走b个宽度,左转90,随机走a个长度,落笔,跟我画一个小圈圈
        t.fd(b)
        t.left(90)
        t.fd(a)
        t.pendown()

        t.pencolor("lightcoral")  # 珊瑚色
        # t.pencolor("green")
        t.circle(1)

        t.penup()  # 跟我左边抬个笔,后退个a的长度,右边转个90,后退个b的宽度,这样可以
        t.backward(a)  # 让海龟回到和刚出发位置差不多的水平线上,所以上面的b设置最好小一点
        t.right(90)
        t.backward(b)


def main():
    t.bgpic(r'04.gif')

    t.screensize(500, 500, "black")
    t.speed(0)
    t.penup()
    t.backward(4 * BRANCE)
    t.right(90)
    t.fd(3*BRANCE)
    t.pendown()
    t.left(180)

    draw_tree(brance)

    draw_fallenflower(brance)

    t.done()


main()

(3)可修改小效果 🌺

修改树干颜色,大家可添加自己喜欢的颜色

效果出来美丑大家自行负责哈,反正博主是不会负责的~


当然了,修改上面的花和落花也是同理,这里博主久不截出来了~

代码都有注释的,完全可以看出并修改~

背景图片也是可以修改的,大家可以自行找图


🌸 樱花雪月,落樱缤纷

❀ ​樱花和你一一一一我都想念·樱花 ❀

点击 蓝色字体 领取源码、解答

这个不是python的代码哦~是我从别处看见的,也分享给你们哦

复制代码后桌面新建文本,粘贴代码保存,在后文本后缀改为html就可

以上是关于python待君有余暇,看春赏樱花,这不得来一场浪漫的樱花旅~的主要内容,如果未能解决你的问题,请参考以下文章

python喜欢XJJ?这不得来一波大采集?

Python&七夕程序员的小浪漫一一樱花树

python画樱花

Python 画樱花表白

Python——画一棵漂亮的樱花树

Python 圣诞树和樱花树源码