首页 文章详情

用Python画圣诞树有下雪特效?

AI悦创 | 307 2022-02-13 20:37 0 0 0
UniSMS (合一短信)

阅读本文大概需要6分钟


你好,我是悦创。


圣诞节快到了,你收到手绘的圣诞树了吗?最近,备忘录圣诞树不仅在朋友圈里非常活跃,甚至已经偷偷卷起来了!



在微博上,你甚至能看到#备忘录圣诞树大赛#话题,很多小伙伴在努力地参赛,更新自己的画作。


(图片源自微博)


不得不说,有些参赛选手的作品是相当优秀的,让人直呼“你的备忘录,我的备忘录,好像不一样”,下面就来观摩一下优秀参赛作品:


(图片源自微博)


看了这么多优秀作品,但轮到自己上手的时候,难免出现“一看就会,一画就废”的尴尬境地……



手绘不好圣诞树也没关系,条条大路通罗马,咱们还可以走“技术流派”,用Python来绘制圣诞树,不仅有树,还有飞舞的雪花。


我也是想给我的好朋友来一份不一样的礼物,此处手动@小唐在画画,和我的众多好友。


先给小伙伴们看一下成品,简约的线条勾勒出精心装扮的圣诞树,经典的红绿搭配,大雪纷飞的背景,是不是圣诞氛围拉满呢?


如果你也想用Python画出一棵圣诞树,那下面的教程可要认真学习哦!



这里为了赶速度,就直接写最 Base 的代码。


1. 导入代码与基础配置


from turtle import *
import random as r

screen = Screen()  
width, height = 500,500  
title("圣诞树")  
bgcolor("black")  
speed("fastest")  #定义速度
setup(500500, startx=None, starty=None)
pencolor("green")
pensize(10)
penup()
hideturtle()
goto(0150)
showturtle()
pendown()
shape(name="classic")


2. 画第一层

#画第一层
seth(-120)

for i in range(10):
    fd(12)
    right(2)
penup()
goto(0150)
seth(-60)
pendown()
for i in range(10):
    fd(12)
    left(2)
seth(-150)
penup()
fd(10)
pendown()
for i in range(5):
    fd(10)
    right(15)
seth(-150)
penup()
fd(8)
pendown()
for i in range(5):
    fd(10)
    right(15)
seth(-155)
penup()
fd(5)
pendown()
for i in range(5):
    fd(7)
    right(15)

3. 画第二层

#画第二层
penup()
goto(-5534)
pendown()
seth(-120)
for i in range(10):
    fd(8)
    right(5)

penup()
goto(5035)
seth(-60)
pendown()
for i in range(10):
    fd(8)
    left(5)
seth(-120)
penup()
fd(10)
seth(-145)
pendown()
for i in range(5):
    fd(10)
    right(15)
penup()
fd(10)
seth(-145)
pendown()
for i in range(5):
    fd(12)
    right(15)
penup()
fd(8)
seth(-145)
pendown()
for i in range(5):
    fd(10)
    right(15)
penup()
seth(-155)
fd(8)
pendown()
for i in range(5):
    fd(11)
    right(15)

4. 画第三层

#画第三层
penup()
goto(-100-40)
seth(-120)
pendown()
for i in range(10):
    fd(6)
    right(3)
penup()
goto(80-39)
seth(-50)
pendown()
for i in range(10):
    fd(6)
    left(3)
seth(-155)
penup()
fd(10)
pendown()
for i in range(5):
    fd(8)
    right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):
    fd(8)
    right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):
    fd(7)
    right(10)
penup()
fd(8)
seth(-145)
pendown()
for i in range(7):
    fd(7)
    right(10)
penup()
fd(8)
seth(-140)
pendown()
for i in range(7):
    fd(6)
    right(10)

5. 画第四层

#画第四层
penup()
goto(-120, -95)
seth(-130)
pendown()
for i in range(7):
    fd(10)
    right(5)
penup()
goto(100, -95)
seth(-50)
pendown()
for i in range(7):
    fd(10)
    left(5)
penup()
seth(-120)
fd(10)
seth(-155)
pendown()
for i in range(6):
    fd(8)
    right(10)
penup()
seth(-160)
fd(10)
seth(-155)
pendown()
for i in range(6):
    fd(8)
    right(10)
penup()
seth(-160)
fd(10)
seth(-155)
pendown()
for i in range(6):
    fd(8)
    right(10)
penup()
seth(-160)
fd(10)
seth(-160)
pendown()
for i in range(6):
    fd(8)
    right(10)
penup()
seth(-160)
fd(10)
seth(-160)
pendown()
for i in range(6):
    fd(8)
    right(10)
penup()
seth(-160)
fd(10)
seth(-165)
pendown()
for i in range(5):
    fd(10)
    right(11)

6. 画树干

#画树干
pencolor("#8B4513")
penup()
goto(-70, -165)
seth(-85)
pendown()
for i in range(3):
    fd(5)
    left(3)
penup()
goto(70, -165)
seth(-95)
pendown()
for i in range(3):
    fd(5)
    right(3)
seth(-170)
penup()
fd(10)
pendown()
pendown()
for i in range(10):
    fd(12)
    right(2)


6. 画雪

#画雪
pencolor("#DCDCDC")
penup()
goto(70, -165)
pendown()
seth(-90)
pensize(8)
circle(-20, 90)

penup()
goto(30, -185)
pendown()
seth(-180)
pensize(8)
fd(40)

penup()
goto(-5, -170)
pendown()
seth(-180)
pensize(8)
fd(35)


def guest(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(10)
        right(10)


def guet(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(10)
        left(10)


def qu(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(6)
        right(10)
    seth(-150)
    fd(20)


7. 不同形状的雪。。。代码过多,请直接下载源码阅读吧!


1. https://gitee.com/huangjiabaoaiyc/image/raw/master/202112240012836.py


2. https://www.aiycoj.cn/?id=6bfecd4b-c893-4efa-8687-9767deb2f0f0

1.是代码链接,2.是我开发的在线编程并代码分享的链接。推荐使用 2 链接访问。


现在给大家分享一小段其中用来“画上”雪花的函数代码,下面的代码可以在指定坐标放上一条具有一定倾斜角度的雪花。

def guest(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(10)
        right(10)

看到这里,你有完整的Python画圣诞树的思路吗?公众号后台回复关键词“圣诞树”,获得完整的代码,赶快动动小手试试吧~



AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh

作者:AI悦创
排版:AI悦创





黄家宝丨AI悦创

隐形字

摄影公众号「悦创摄影研习社」


在这里分享自己的一些经验、想法和见解。


长按识别二维码关注




好文和朋友一起看~
good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter