心情不好的时候,用 Python 画棵樱花树送给自己吧「建议收藏」

心情不好的时候,用 Python 画棵樱花树送给自己吧「建议收藏」最近发生了很多事情,工作不开心,爱情无果而终,身边的小伙伴陆陆续续离职。虽然都不是会一下子击垮自己的事情,但是积攒起来,还是会有突然感到疲惫和倦怠的时候,有一种不知道下一步要走向哪里的无力感。在这个城市留下了很多的回忆,但是身边的人一个个离开,走到现在,似乎没有太多留恋的了,也没想好未来要去哪里。自己是一个始终需要新鲜感的人,在这里停留了太久,大概到了该说再见的时候了吧。

大家好,又见面了,我是你们的朋友全栈君。

最近发生了很多事情,工作不开心,爱情无果而终,身边的小伙伴陆陆续续离职。虽然都不是会一下子击垮自己的事情,但是积攒起来,还是会有突然感到疲惫和倦怠的时候,有一种不知道下一步要走向哪里的无力感。

在这个城市留下了很多的回忆,但是身边的人一个个离开,走到现在,似乎没有太多留恋的了,也没想好未来要去哪里。自己是一个始终需要新鲜感的人,在这里停留了太久,大概到了该说再见的时候了吧。

那么,用一个不熟悉的语言,画棵樱花树送给自己吧,代码也可以很浪漫不是吗。520刚刚过了,没有爱情,自己也要好好爱自己才对。

一. 绘制步骤

1. 环境安装

可以参考之前的博客:

Python 爬虫实现:抓取电影网站信息并入库

2. 图片美化

之前没怎么用过 Python,就对别人的代码进行分析和效果优化好啦,顺便学习一下。

这个是原来的效果图,有点灰蒙蒙的,微微改动,让它明媚一点。
在这里插入图片描述
修改之后的代码:

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

def tree(n,l):
    pd()#下笔
    #阴影效果
    t = cos(radians(heading()+45))/8+0.25
    pencolor(t,t,t)
    pensize(n/3)
    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)
        #转回来
        right(c)
    else:
        #画叶子
        right(90)
        n=cos(radians(heading()-45))/4+0.5
        ran=random()
        #这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点
        if(ran>0.7):
            begin_fill()
            circle(3)
            fillcolor('pink')
        #把原来随机生成的叶子换成了统一的粉色
        pencolor("pink")
        circle(3)
        if(ran>0.7):
            end_fill()
        left(90)
        #添加0.3倍的飘落叶子
        if(random()>0.7):
            pu()
            #飘落
            t = heading()
            an = -40 +random()*40
            setheading(an)
            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
            forward(dis)
            setheading(t)
            #画叶子
            pd()
            right(90)
            n = cos(radians(heading()-45))/4+0.5
            pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
            circle(2)
            left(90)
            pu()
            #返回
            t=heading()
            setheading(an)
            backward(dis)
            setheading(t)
    pu()
    backward(l)#退回
    
bgcolor(0.956,0.9255,0.9882)#设置背景色(把灰色换成淡紫色)
ht()#隐藏turtle
speed(0)#速度 1-10渐进,0 最快
tracer(0,0)
pu()#抬笔
backward(50)
left(90)#左转90度
pu()#抬笔
backward(300)#后退300
tree(12,100)#递归7层
done()

之后的效果温暖一点,喜欢这种更有温度的色调:
在这里插入图片描述

二. 技术学习

1. turtle 简介

樱花树的绘制效果是通过 Python 中的 turtle 来实现的,Python 的强大之处在于有许多很强大的库,turtle就是其中之一,是 Python 自带的一个库。

2. turtle 绘图的基础知识

turtle库绘制原理:有一只海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以自由改变颜色、方向宽度等。

(1) . turtle 绘图窗体

setup用来设置窗体大小,后两个参数为非必选参数;

turtle.setup(width,height,startx,starty)

(2) . turtle 的坐标体系

画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向的小乌龟。

这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle 绘图中,就是使用位置方向描述小乌龟(画笔)的状态的。
在这里插入图片描述
(3) . turtle 画笔属性

命令 说明
turtle.pensize() 设置画笔的宽度
turtle.pencolor() 没有参数传入,返回当前画笔颜色;传入参数设置画笔颜色,可以是字符串如 “green”, “red”,也可以是RGB 3元组
turtle.speed(speed) 设置画笔移动速度,画笔绘制的速度范围 [0,10] 整数,数字越大越快

(4) . turtle 绘图命令

运动命令

命令 说明
turtle.forward(distance) 向当前画笔方向移动distance像素长度
turtle.backward(distance) 向当前画笔相反方向移动distance像素长度
turtle.right(degree) 顺时针移动degree°
turtle.left(degree) 逆时针移动degree°
turtle.pendown() 移动时绘制图形,缺省时也为绘制
turtle.goto(x,y) 将画笔移动到坐标为x,y的位置
turtle.penup() 提起笔移动,不绘制图形,用于另起一个地方绘制
turtle.pendown() 移动时绘制图形,缺省时也为绘制
turtle.circle() 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
setx( ) 将当前x轴移动到指定位置
sety( ) 将当前y轴移动到指定位置
setheading(angle) 设置当前朝向为angle角度
home() 设置当前画笔位置为原点,朝向东
dot® 绘制一个指定直径和颜色的圆点

控制命令

命令 说明
turtle.fillcolor(colorstring) 绘制图形的填充颜色
turtle.color(color1, color2) 同时设置 pencolor=color1, fillcolor=color2
turtle.filling() 返回当前是否在填充状态
turtle.begin_fill() 准备开始填充图形
turtle.end_fill() 填充完成
turtle.hideturtle() 隐藏画笔的turtle形状
turtle.showturtle() 显示画笔的turtle形状

全局控制命令

命令 说明
turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset() 清空窗口,重置turtle状态为起始状态
turtle.undo() 撤销上一个turtle动作
turtle.isvisible() 返回当前turtle是否可见
stamp() 复制当前图形
turtle.hideturtle() 隐藏画笔的turtle形状
turtle.write(s [,font=(“font-name”,font_size,“font_type”)]) 写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

虽然没有在原来的基础上改动太多的代码,只是简单的给樱花树换了个风格,但是其实也做了很多的尝试和调整,也学到了怎么使用 turtle 。

这篇博客磨磨唧唧写了好久,在调整和写的时候也在调整自己的心情。在这中间还趁着周末自己跑去青岛溜达了一圈,比烟台热好多啊,去了一趟一下子想开了,哈哈哈哈,果然还是要多出去溜达溜达啊。

有的时候其实想想,想要新鲜感也很容易,既然外面环境给不了,那就自己来创造。最近想买个吉他,准备给自己加点文艺色彩,就算生活暂时不那么美好,自己还是要做一些有意思的事情尽量让自己保持一个好的心态。

虽然还是不知道以后要怎样,但是先走好脚下的路,活在当下,以后的事顺其自然就好啦。

Everything will be ok~

加油!


本篇博客参考了以下博客的代码,之前忘记加上了,多亏评论区小伙伴提醒,感谢原作者,送上小花花~~ ★,°:.☆( ̄▽ ̄)/$:.°★

Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143160.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html倒计时免费代码,JS倒计时代码汇总[通俗易懂]

    本文实例总结了常见的JS倒计时代码。分享给大家供大家参考。具体汇总如下:第一种:精确到秒的javascript倒计时代码HTML代码:离2010年还有:startclock()vartimerID=null;vartimerRunning=false;functionshowtime(){Today=newDate();varNowHour=Today.getHours…

    2022年4月6日
    77
  • 个人项目 Individual Project

    个人项目 Individual Project

    2021年11月18日
    58
  • MYSQL mediumText大字段存储错误问题排查「建议收藏」

    MYSQL mediumText大字段存储错误问题排查「建议收藏」思路:1:由于日志查询问题,没看到日志之前怀疑:MYSQL数据库字段长度是否真的足够,排查问题未果。2:步骤一未果,看日志了解错误信息如下Name”:”com.javartisan.audience_management.jsf_service.service.AudienceService”}org.springframework.orm.jpa.JpaSystemExcepti…

    2022年5月15日
    40
  • 最全静态网页模板网站下载_网页首页内容模板

    最全静态网页模板网站下载_网页首页内容模板前言最近好多人私信我:我学了不久前端,想要用一些项目实战来练练手。那么,我以后将定期更新静态网页实战,专用于提供初学者的练习。那么这次博客为大家提供一些模板网站,希望初学者借鉴和学习优质资源:以下网站对于初学者的作用:提供免费的静态网页下载提高自己的css+html5设计水平http://sc.chinaz.com/moban/“站长素材”网站中包括大量的免费模板,可任意下载。…

    2025年9月15日
    6
  • Java安全之Jdk7u21链分析

    Java安全之Jdk7u21链分析文章首发:Java安全之Jdk7u21链分析0x00前言其实该链是想拿到后面再去做分析的,但是学习到Fastjson这个漏洞,又不得不使用到该链。那么在这里就

    2021年12月12日
    46
  • 微型计算机的字节取决于什么的宽度,计算机字长取决于什么的长度[通俗易懂]

    微型计算机的字节取决于什么的宽度,计算机字长取决于什么的长度[通俗易懂]满意答案ajpno2013.03.28采纳率:44%等级:12已帮助:10279人计算机的字长取决于数据总线的宽度.字长是指计算机内部参与运算的数的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,直接影响着机器的硬件规模和造价。字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和…

    2022年6月28日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号