前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >520快到了,我用代码画了一幅画「可以送给自己喜欢的人」

520快到了,我用代码画了一幅画「可以送给自己喜欢的人」

作者头像
AXYZdong
发布2020-10-29 09:47:35
5630
发布2020-10-29 09:47:35
举报
文章被收录于专栏:想到什么就分享
在这里插入图片描述
在这里插入图片描述

前言

灵感来源 或者说 什么促使了我写这篇文章 :

  • 520是一个独特的一个日子
  • 之前用了Turtle库画了爱心,然后又参照一些大佬的文章,画了樱花树。
  • 想把【樱花树+爱心】这两者结合起来,做一个小礼物送给不一样的你!

话说作为单身狗为啥要写这篇文章 ? emmm ,你就当是白嫖喽

一、樱花树

关于樱花树,CSDN上面好多大佬都已经将代码开源,我只是一个搬运工,参考大佬的代码!

  • 代码
代码语言:javascript
复制
import turtle as T
import random
import time

# 画樱花的躯干(60,t)
def Tree(branch, t):
    time.sleep(0.0005)
    if branch > 3:
        if 8 <= branch <= 12:
            if random.randint(0, 2) == 0:
                t.color('snow')  # 白
            else:
                t.color('lightcoral')  # 淡珊瑚色
            t.pensize(branch / 3)
        elif branch < 8:
            if random.randint(0, 1) == 0:
                t.color('snow')
            else:
                t.color('lightcoral')  # 淡珊瑚色
            t.pensize(branch / 2)
        else:
            t.color('sienna')  # 赭(zhě)色
            t.pensize(branch / 10)  # 6
        t.forward(branch)
        a = 1.5 * random.random()
        t.right(20 * a)
        b = 1.5 * random.random()
        Tree(branch - 10 * b, t)
        t.left(40 * a)
        Tree(branch - 10 * b, t)
        t.right(20 * a)
        t.up()
        t.backward(branch)
        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)
# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle()  # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(1000,800,'wheat')  # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
    
# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(300, t)
w.exitonclick()
  • 效果
在这里插入图片描述
在这里插入图片描述

二、爱心

  • 代码
代码语言:javascript
复制
from turtle import *

penup()
goto(-100,-100)
pensize(4)
color('pink','pink')

left(90)
forward(100)
pendown()
begin_fill()
circle(70,230)
forward(140)
end_fill()

begin_fill()
seth(40)
forward(135)
right(5)
circle(70,235)
end_fill()

penup()
goto(100,-100)
pencolor('black')
write("By AXYZdong", font=('方正行黑简体', 30, 'normal'))

hideturtle()
mainloop()
  • 效果
在这里插入图片描述
在这里插入图片描述

关于画爱心谈谈自我的感受:

  • 对于坐标和各种角度转换可能需要思考一下,要让小乌龟知道你想让它干什么
  • turtle up 和 turtle down 注意使用的时机
  • turtle write 写文本时,使用电脑里已有的字体

三、添加文字

代码语言:javascript
复制
def Font():
    t.penup()
    t.goto(-500,-300)
    t.pencolor('black')
    t.write("By AXYZdong,不一样的樱花+爱心送给不一样的你,520", font=('方正行黑简体', 30, 'normal'))

四、樱花树+爱心+文字

  • 完整代码,亲测可用
代码语言:javascript
复制
# =============================================
# --*-- coding: utf-8 --*--
# @Time    : 2020-05-20
# @Author  : AXYZdong
# @CSDN    : https://blog.csdn.net/qq_43328313
# @FileName: 520.py
# @Software: Python3.7
# =============================================
import turtle as T
import random
import time

# 画樱花的躯干(60,t)
def Tree(branch, t):
    time.sleep(0.0005)
    if branch > 3:
        if 8 <= branch <= 12:
            if random.randint(0, 2) == 0:
                t.color('snow')  # 白
            else:
                t.color('lightcoral')  # 淡珊瑚色
            t.pensize(branch / 3)
        elif branch < 8:
            if random.randint(0, 1) == 0:
                t.color('snow')
            else:
                t.color('lightcoral')  # 淡珊瑚色
            t.pensize(branch / 2)
        else:
            t.color('sienna')  # 赭(zhě)色
            t.pensize(branch / 10)  # 6
        t.forward(branch)
        a = 1.5 * random.random()
        t.right(20 * a)
        b = 1.5 * random.random()
        Tree(branch - 10 * b, t)
        t.left(40 * a)
        Tree(branch - 10 * b, t)
        t.right(20 * a)
        t.up()
        t.backward(branch)
        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 Love(x ,y):
    t.up()
    t.home()   
    t.goto(x,y)
    t.pensize(4)
    t.color('pink','pink')  # 粉
    t.left(90)
    t.forward(100)
    t.down()
    t.begin_fill()
    t.circle(70,230)
    t.forward(140)
    t.end_fill()
    t.begin_fill()
    t.seth(40)
    t.forward(135)
    t.right(5)
    t.circle(70,235)
    t.end_fill()
    t.up()

# 文字
def Font():
    t.penup()
    t.goto(-500,-300)
    t.pencolor('black')
    t.write("By AXYZdong,不一样的樱花+爱心送给不一样的你,520", font=('方正行黑简体', 30, 'normal'))

# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle()  # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(1000,800,'wheat')  # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
    
# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(300, t)
# 爱心
Love(-400, 100)
Love(400, 100)
Love(-400,-150)
Love(400,-150)
# 文字
Font()

w.exitonclick()
  • 效果
在这里插入图片描述
在这里插入图片描述
  • 也可以画点小圆圈装饰一下,灵感来源于 @1_bit 大佬
代码语言:javascript
复制
# 装饰画布
def Decorate(m):
    x,y=-900,-400
    for i in range(30):
        t.up()
        t.goto(x,y)
        x+=100
        t.down()
        yval=50
        for i in range(m):
            a = 100*random.random()
            b = 2*random.random()
            if a>59:
                t.color('#FE2E9A')
            else:
                t.color('#04B486')
            t.circle(5)
            t.up()
            t.goto(x,y+(yval*b))
            t.fd(a)
            yval+=50
            t.down()      

装饰完了后就是文章开头的那个样子啦 !

总结

独特的日期 + 创作的灵感 ,产生不一样的的火花。不一样的【樱花树+爱心】送给不一样的你,520 !

看完这篇文章之后,告诉你一个坏消息: 博主可能要停更一段时间,毕竟期末考试它要来了,emmm,下一篇博客更精彩!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、樱花树
  • 二、爱心
  • 三、添加文字
  • 四、樱花树+爱心+文字
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档