前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用python绘制高级版圣诞树(小彩灯+落叶+雪花+唱歌+祝福弹窗+圣诞树词云图)看

用python绘制高级版圣诞树(小彩灯+落叶+雪花+唱歌+祝福弹窗+圣诞树词云图)看

原创
作者头像
奈何缘浅wyj
修改2022-03-01 21:19:22
2.2K0
修改2022-03-01 21:19:22
举报
文章被收录于专栏:python技术开发python技术开发

前言

一年一度的圣诞节快到了,博客上也开始五花八门的出现各种博文,当然朋友圈也是圈出来花来了。在CSDN搜索栏里面发现大家的博文阅读量也都【】破万了,当然也不能湿了这波热度,必须给安排上。。。

新手级教学,大家赶紧码上

在这里插入图片描述
在这里插入图片描述

话不多说,先给大家看看最终结果

带有落叶+彩灯+固定雪花+祝福弹窗的圣诞树

在这里插入图片描述
在这里插入图片描述

圣诞树的词云图

在这里插入图片描述
在这里插入图片描述

带有动态雪花的圣诞树

在这里插入图片描述
在这里插入图片描述

看到这里是不是觉得很哇晒,那么开始动手干起来吧,不要错过如此美好的日子。。。

是不是可以先来个一键三连{点赞+关注+评论}

手把手教学绘制圣诞树

资源库的加载

圣诞库制作过程最重要的资源库就是海龟turtle

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

代码语言:python
复制
import turtle as t
import random
import pygame
import threading
import time
import tkinter as tk

如果没有下载的小伙伴们可以用pip进行下载,这里就不多说,需要注意的是可以使用镜像进下载安全,这样速度会快上许多。

星星绘制

圣诞树的顶部绘制的是一颗闪亮的星星,绘制时需要注意星星颜色的设置,角度的设置(144度和72度)。

代码语言:python
复制
# 画星星
t.left(90)
t.forward(3 * n)
t.color("orange", "yellow") # 定义星星的颜色,外圈是orange,内圈是yellow
t.begin_fill()  # 对图形进行填充
t.left(126)

for i in range(5):  # 画五角星
    t.forward(n / 5)
    t.right(144)    # 五角星的角度
    t.forward(n / 5)
    t.left(72)  # 继续换角度

彩灯的绘制

在圣诞树上需要挂很多的小彩灯,为了显示这中效果,彩色不同颜色不同大小的小圆圈代替小彩灯。

代码语言:python
复制
def drawlight():    # 定义画彩灯的方法
    if random.randint(0,30) == 0:
        t.color('tomato')   # 定义第一种颜色
        t.circle(6)   # 定义彩灯大小
    elif random.randint(0,30) == 1:
        t.color('orange')  # 定义第二种颜色
        t.circle(3)  # 定义彩灯大小
    else:
        t.color("dark green")   # 其余的随机数情况下画空的树枝

绘制的圣诞树整体

圣诞树的绘制需要引导递归的树函数,主要通过海龟里的forword、right、backward进行操作。同时设置圣诞树的颜色为dark green。

代码语言:python
复制
# 树函数(递归)
def tree(d, s):
    if d <= 0:
        return
    t.forward(s)
    tree(d - 1, s * .8)
    t.right(120)
    tree(d - 3, s * .5)
    drawlight()  # 调用绘制小彩灯
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    t.backward(s)  # 回退函数

# 画树
t.end_fill()
t.right(126)
t.color("dark green")
t.backward(n * 4.8)
tree(15, n)
t.backward(n/2)

绘制圣诞树的落叶

为了模拟落叶的效果,也是使用不同颜色的小圆圈进行代替。使用random函数,通过判断条件控制了两种颜色,当然也可以加入更多的颜色进行绘制。

代码语言:python
复制
    if random.randint(1, 2) == 1:
        t.color('sienna')
    else:
        t.color('lightcoral')   # 淡珊瑚色

绘制时也是通过海龟进行控制。

代码语言:python
复制
# 绘制落叶
for i in range(200):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    t.speed(0)
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    if random.randint(1, 2) == 1:
        t.color('sienna')
    else:
        t.color('lightcoral')   # 淡珊瑚色
    t.circle(4)
    t.up()
    t.backward(a)
    t.right(90)

绘制静态雪花

绘制雪花时首先需要定义雪花的数量和画笔的颜色{白色}

代码语言:python
复制
    for i in range(200):  # 画多少雪花
        t.pencolor("white")  # 定义画笔颜色为白色,其实就是雪花为白色
        t.pu()  # 提笔,pu=penup

然后定义雪花的x和y坐标,通过随机函数random进行控制

代码语言:python
复制
t.setx(random.randint(-350, 350))  # 定义x坐标,随机从-350到350之间选择
t.sety(random.randint(-100, 350))  # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始

主要绘制代码如下:

代码语言:python
复制
# 绘制雪花
def drawsnow():  # 定义画雪花的方法
    t.speed(0)
    t.ht()  # 隐藏笔头,ht=hideturtle
    t.pensize(2)  # 定义笔头大小
    for i in range(200):  # 画多少雪花
        t.pencolor("white")  # 定义画笔颜色为白色,其实就是雪花为白色
        t.pu()  # 提笔,pu=penup
        t.setx(random.randint(-350, 350))  # 定义x坐标,随机从-350到350之间选择
        t.sety(random.randint(-100, 350))  # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
        t.pd()  # 落笔,pd=pendown
        dens = 6  # 雪花瓣数设为6
        snowsize = random.randint(1, 10)  # 定义雪花大小
        for j in range(dens):  # 就是6,那就是画5次,也就是一个雪花五角星
            # t.forward(int(snowsize))  #int()取整数
            t.fd(int(snowsize))
            t.backward(int(snowsize))
            # t.bd(int(snowsize))  #注意没有bd=backward,但有fd=forward,小bug
            t.right(int(360 / dens))  # 转动角度


drawsnow()

绘制动态雪花

动态雪花的绘制需要用到pygame资源库,首先需要进行初始化

代码语言:python
复制
# 初始化pygame
pygame.init()
# 设置屏幕宽高,根据背景图调整
bg_img = "1.png"
# 根据背景图片的大小,设置屏幕长宽
bg_size = (841, 821)
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("雪夜圣诞树")
bg = pygame.image.load(bg_img)

然后定义雪花圆心位置、x轴偏移量、y轴下降量和半径

代码语言:python
复制
# 雪花列表
snow_list = []
# 初始化雪花:[x坐标,y坐标,x轴速度,y轴速度]
for i in range(150):
    # 雪花圆心位置
    x_site = random.randrange(0, bg_size[0])
    # 雪花圆心位置
    y_site = random.randrange(0, bg_size[1])
    # x 轴偏移量
    X_shift = random.randint(-1, 1)
    # 半径和 y 轴下降量
    radius = random.randint(4, 6)
    snow_list.append([x_site, y_site, X_shift, radius])
# 创建时钟对象
clock = pygame.time.Clock()

最后通过消息时间循环进行雪花移动位置、大小的动态绘制

代码语言:python
复制
done = False
while not done:
    # 消息事件循环,判断退出
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
    # 黑背景
    # screen.fill((0, 0, 0))
    screen.blit(bg, (0, 0))
    # 雪花列表循环
    for i in range(len(snow_list)):
        # 绘制雪花,颜色、位置、大小
        pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3] - 3)
        # 移动雪花位置(下一次循环起效)
        snow_list[i][0] += snow_list[i][2]
        snow_list[i][1] += snow_list[i][3]
        # 如果雪花落出屏幕,重设位置
        if snow_list[i][1] > bg_size[1]:
            snow_list[i][1] = random.randrange(-50, -10)
            snow_list[i][0] = random.randrange(0, bg_size[0])
    # 刷新屏幕
    pygame.display.flip()
    clock.tick(30)

主要绘制代码

代码语言:python
复制
import random
import pygame

# 初始化pygame
pygame.init()
# 设置屏幕宽高,根据背景图调整
bg_img = "1.png"
# 根据背景图片的大小,设置屏幕长宽
bg_size = (841, 821)
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("雪夜圣诞树")
bg = pygame.image.load(bg_img)
# 雪花列表
snow_list = []
# 初始化雪花:[x坐标,y坐标,x轴速度,y轴速度]
for i in range(150):
    # 雪花圆心位置
    x_site = random.randrange(0, bg_size[0])
    # 雪花圆心位置
    y_site = random.randrange(0, bg_size[1])
    # x 轴偏移量
    X_shift = random.randint(-1, 1)
    # 半径和 y 轴下降量
    radius = random.randint(4, 6)
    snow_list.append([x_site, y_site, X_shift, radius])
# 创建时钟对象
clock = pygame.time.Clock()
done = False
while not done:
    # 消息事件循环,判断退出
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
    # 黑背景
    # screen.fill((0, 0, 0))
    screen.blit(bg, (0, 0))
    # 雪花列表循环
    for i in range(len(snow_list)):
        # 绘制雪花,颜色、位置、大小
        pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3] - 3)
        # 移动雪花位置(下一次循环起效)
        snow_list[i][0] += snow_list[i][2]
        snow_list[i][1] += snow_list[i][3]
        # 如果雪花落出屏幕,重设位置
        if snow_list[i][1] > bg_size[1]:
            snow_list[i][1] = random.randrange(-50, -10)
            snow_list[i][0] = random.randrange(0, bg_size[0])
    # 刷新屏幕
    pygame.display.flip()
    clock.tick(30)

# 退出
pygame.quit()

圣诞节快乐弹窗绘制

此时需要使用tkinter进行绘制,随机定义好窗口大小和位置、字体大小和颜色。

代码语言:python
复制
# 弹窗制作
def dow():
    window = tk.Tk()
    width = window.winfo_screenwidth()
    height = window.winfo_screenheight()
    a = random.randrange(0, width)
    b = random.randrange(0, height)
    window.title('圣诞节快乐')
    window.geometry("200x50" + "+" + str(a) + "+" + str(b))
    tk.Label(window,
             text='圣诞节快乐!',  # 标签的文字
             bg='pink',  # 背景颜色
             font=('..', 17),  # 字体和字体大小
             width=18, height=2  # 标签长宽
             ).pack()  # 固定窗口位置
    window.mainloop()

圣诞快乐歌的加载

如果需要在绘制圣诞树的同时放 圣诞快乐歌,那么需要的最开始加载歌曲文件

代码语言:python
复制
file=r'christmas.mp3'		# 音乐的路径
pygame.mixer.init()						# 初始化
track = pygame.mixer.music.load(file)	# 加载音乐文件
pygame.mixer.music.play()				# 开始播放音乐

源码

代码语言:python
复制
# @Time : 2021/12/24 11:09 
# @Author : WYJ
# @File : christmas.py 
# @Software: PyCharm

import turtle as t
import random
import pygame
import threading
import time
import tkinter as tk

# file=r'薛之谦 - 迟迟.mp3'		# 音乐的路径
# pygame.mixer.init()						# 初始化
# track = pygame.mixer.music.load(file)	# 加载音乐文件
# pygame.mixer.music.play()				# 开始播放音乐

n = 80.0

# 设置速度快
t.speed("fastest")
# 背景颜色 海贝壳色,偏粉色
t.screensize(bg='seashell')  # 定义背景颜色,可以自己换颜色

# 画星星
t.left(90)
t.forward(3 * n)
t.color("orange", "yellow") # 定义星星的颜色,外圈是orange,内圈是yellow
t.begin_fill()  # 对图形进行填充
t.left(126)

for i in range(5):  # 画五角星
    t.forward(n / 5)
    t.right(144)    # 五角星的角度
    t.forward(n / 5)
    t.left(72)  # 继续换角度


def drawlight():    # 定义画彩灯的方法
    if random.randint(0,30) == 0:
        t.color('tomato')   # 定义第一种颜色
        t.circle(6)   # 定义彩灯大小
    elif random.randint(0,30) == 1:
        t.color('orange')  # 定义第二种颜色
        t.circle(3)  # 定义彩灯大小
    else:
        t.color("dark green")   # 其余的随机数情况下画空的树枝


# 树函数(递归)
def tree(d, s):
    if d <= 0:
        return
    t.forward(s)
    tree(d - 1, s * .8)
    t.right(120)
    tree(d - 3, s * .5)
    drawlight()  # 调用绘制小彩灯
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    t.backward(s)  # 回退函数

# 画树
t.end_fill()
t.right(126)
t.color("dark green")
t.backward(n * 4.8)
tree(15, n)
t.backward(n/2)


# 绘制落叶
for i in range(200):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    t.speed(0)
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    if random.randint(1, 2) == 1:
        t.color('sienna')
    else:
        t.color('lightcoral')   # 淡珊瑚色
    t.circle(4)
    t.up()
    t.backward(a)
    t.right(90)
    t.backward(b)


# 绘制雪花
def drawsnow():  # 定义画雪花的方法
    t.speed(0)
    t.ht()  # 隐藏笔头,ht=hideturtle
    t.pensize(2)  # 定义笔头大小
    for i in range(200):  # 画多少雪花
        t.pencolor("white")  # 定义画笔颜色为白色,其实就是雪花为白色
        t.pu()  # 提笔,pu=penup
        t.setx(random.randint(-350, 350))  # 定义x坐标,随机从-350到350之间选择
        t.sety(random.randint(-100, 350))  # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
        t.pd()  # 落笔,pd=pendown
        dens = 6  # 雪花瓣数设为6
        snowsize = random.randint(1, 10)  # 定义雪花大小
        for j in range(dens):  # 就是6,那就是画5次,也就是一个雪花五角星
            # t.forward(int(snowsize))  #int()取整数
            t.fd(int(snowsize))
            t.backward(int(snowsize))
            # t.bd(int(snowsize))  #注意没有bd=backward,但有fd=forward,小bug
            t.right(int(360 / dens))  # 转动角度


drawsnow()

# 写下署名
t.color("red")  # 填充颜色
t.up()  # 抬笔
t.goto(200,-100)    # 设置起点位置
t.down()  # 落笔
t.write("Merry Christmas-左手の明天", align="center", font=("Comic Sans MS", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()

time.sleep(2)


# 弹窗制作
def dow():
    window = tk.Tk()
    width = window.winfo_screenwidth()
    height = window.winfo_screenheight()
    a = random.randrange(0, width)
    b = random.randrange(0, height)
    window.title('圣诞节快乐')
    window.geometry("200x50" + "+" + str(a) + "+" + str(b))
    tk.Label(window,
             text='圣诞节快乐!',  # 标签的文字
             bg='pink',  # 背景颜色
             font=('..', 17),  # 字体和字体大小
             width=18, height=2  # 标签长宽
             ).pack()  # 固定窗口位置
    window.mainloop()


threads = []
for i in range(10):  # 需要的弹框数量
    t = threading.Thread(target=dow)
    threads.append(t)
    time.sleep(0.01)
    threads[i].start()

动态绘制圣诞树全过程

在这里插入图片描述
在这里插入图片描述

圣诞树词云图绘制

绘制圣诞树词云图非常简单只需要你十几行代码就能完成,当然需要圣诞树的掩膜图像和txt文本准备好

代码语言:python
复制
from wordcloud import WordCloud
import PIL.Image as image
import numpy as np

img_path = "wordcloud.png"    # 输出生成的词云图片路径

with open('./christmas.txt', 'r') as f:
    text = f.read()
mask = np.array(image.open('./mask.png'))
word_cloud = WordCloud(mask=mask).generate(str(text))

image_file = word_cloud.to_image()                             # 生成图片
image_file.show()                                              # 显示图片
word_cloud.to_file(img_path)                                   # 保存生成的图片
在这里插入图片描述
在这里插入图片描述

附录

大佬Youngkers在用Python画圣诞树绘制了一种圣诞树,感觉很quit,可以借鉴学习。。。

代码语言:python
复制
from turtle import *
import time

setup(500, 500, startx=None, starty=None)
speed(0)
pencolor("pink")
pensize(10)
penup()
hideturtle()
goto(0, 150)
showturtle()
pendown()
shape(name="classic")
# 1
seth(-120)
for i in range(10):
    fd(12)
    right(2)
penup()
goto(0, 150)
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)
# 2
penup()
goto(-55, 34)
pendown()
seth(-120)
for i in range(10):
    fd(8)
    right(5)

penup()
goto(50, 35)
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)
# 3
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)

# 4
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)
# 5
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
penup()
goto(70, -165)
pendown()
seth(-90)
pensize(8)
pencolor("#de8891")
circle(-20, 90)

penup()
goto(30, -185)
pendown()
seth(-180)
pensize(8)
pencolor("#de8891")
fd(40)

penup()
goto(-5, -170)
pendown()
seth(-180)
pensize(8)
pencolor("#de8891")
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)


# 树枝
guest(-70, -150, 160)
guest(100, -150, 160)
guet(110, -110, 50)
guest(160, -140, 150)
qu(80, -120, 180)
guest(70, -85, 165)
guest(-40, -85, 165)
guet(90, -50, 50)
guest(130, -80, 150)
pencolor("pink")
qu(-40, -60, 180)
pencolor('#de8891')
qu(80, -30, 180)
pencolor("pink")
qu(40, 10, 180)
pencolor("#de8891")
guest(-60, 30, 120)
guest(-20, -20, 150)
guet(45, 40, 60)
guest(-30, 40, 170)
guest(-30, 110, 115)
guet(40, 90, 60)
guest(80, 50, 160)
pencolor("#de8891")


def hdj(x, y):
    penup()
    goto(x, y)
    seth(80)
    pendown()
    pensize(2)
    circle(5)
    seth(10)
    fd(15)
    seth(120)
    fd(20)
    seth(240)
    fd(20)
    seth(180)
    fd(20)
    seth(-60)
    fd(20)
    seth(50)
    fd(20)
    seth(-40)
    fd(30)
    seth(-130)
    fd(5)
    seth(135)
    fd(30)
    seth(-60)
    fd(30)
    seth(-150)
    fd(6)
    seth(110)
    fd(30)


def uit(x, y):
    penup()
    goto(x, y)
    pendown()
    pensize(2)
    circle(5)
    seth(-10)
    fd(15)
    seth(90)
    fd(15)
    seth(200)
    fd(15)
    seth(160)
    fd(15)
    seth(-90)
    fd(15)
    seth(10)
    fd(15)
    seth(-60)
    fd(20)
    seth(-180)
    fd(5)
    seth(110)
    fd(20)
    seth(-90)
    fd(20)
    seth(-180)
    fd(6)
    seth(70)
    fd(15)
    hideturtle()


def yut(x, y, z):
    penup()
    goto(x, y)
    pendown()
    seth(z)
    for po in range(5):
        fd(4)
        left(36)


def ytu(x, y, z):
    penup()
    goto(x, y)
    pendown()
    seth(z)
    for kk in range(5):
        fd(4)
        left(36)


# 小蝴蝶结
seth(0)
uit(40, -160)
hdj(-80, -120)
yut(-67, -115, 120)
yut(-86, -123, 150)
hdj(40, -50)
yut(52, -45, 130)
yut(34, -55, 160)
seth(0)
uit(-20, -60)
ytu(-4, -60, 100)
ytu(-20, -60, 120)
hdj(-30, 20)
yut(-15, 25, 130)
yut(-40, 20, 180)
uit(30, 70)
ytu(45, 70, 100)
ytu(30, 70, 120)

# 大蝴蝶结
pencolor("#f799e6")
pensize(5)
penup()
seth(0)
goto(0, 150)
pendown()
circle(10)
seth(-15)
fd(40)
seth(90)
fd(40)
seth(200)
fd(40)
seth(160)
fd(40)
seth(-90)
fd(40)
seth(15)
fd(40)
seth(-70)
pencolor("#f799e6")
pensize(4)
fd(40)
seth(-180)
fd(10)
seth(100)
fd(40)
seth(-100)
fd(40)
seth(-180)
fd(10)
seth(70)
fd(40)
penup()
seth(0)
goto(0, 130)
pencolor("pink")
pendown()


def iou(x, y, z):
    penup()
    goto(x, y)
    pencolor("#f799e6")
    pendown()
    seth(z)
    for po in range(10):
        fd(4)
        left(18)


seth(0)
iou(35, 145, 100)
iou(-7, 145, 110)
pencolor("red")
pensize(7)
penup()
goto(-35, 135)
pendown()

# 圣诞帽
seth(-20)
pensize(2)
penup()
goto(-30, -120)
pencolor("black")
pendown()
fillcolor("red")
fd(30)
circle(4, 180)
fd(30)
circle(4, 180)
penup()
goto(-25, -115)
seth(75)
pendown()
begin_fill()
for i in range(5):
    fd(6)
    right(20)
seth(-10)
for i in range(5):
    fd(8)
    right(15)
seth(145)
for i in range(5):
    fd(5)
    left(2)
seth(90)
for i in range(5):
    fd(1)
    left(2)
seth(-90)
for i in range(4):
    fd(4)
    right(6)
seth(161)
fd(30)
end_fill()
pensize(1)
pencolor("black")


def koc(x, y, size):
    pensize(2)
    pencolor("black")
    penup()
    goto(x, y)
    pendown()
    begin_fill()
    fillcolor("yellow")
    for i in range(5):
        left(72)
        fd(size)
        right(144)
        fd(size)
    end_fill()


# 星星
seth(-15)
koc(-120, -70, 10)
seth(10)
koc(100, -20, 10)
seth(-10)
koc(10, 40, 10)
seth(30)
koc(-80, 60, 10)
koc(100, -150, 10)
koc(-140, -150, 10)
koc(20, 120, 10)

# 袜子
seth(-20)
pensize(2)
penup()
goto(-20, 80)
pencolor("black")
pendown()
fillcolor("red")
fd(25)
circle(4, 180)
fd(25)
circle(4, 180)
penup()
goto(-15, 80)
pendown()
begin_fill()
fillcolor("red")
seth(-120)
fd(20)
seth(150)
fd(5)
circle(7, 180)
fd(15)
circle(5, 90)
fd(30)
seth(160)
fd(18)
end_fill()
penup()
seth(0)
goto(100, -230)
pendown()
write("Merry Christmas", align="right", font=("方正黄草简体", 24, "bold"))
done()
在这里插入图片描述
在这里插入图片描述

直呼好看,快来动手试试吧,反正我已经迫不及待了。。。。冲刺中。。。。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 手把手教学绘制圣诞树
    • 资源库的加载
      • 星星绘制
        • 彩灯的绘制
          • 绘制的圣诞树整体
            • 绘制圣诞树的落叶
              • 绘制静态雪花
                • 绘制动态雪花
                  • 圣诞节快乐弹窗绘制
                    • 圣诞快乐歌的加载
                      • 源码
                      • 圣诞树词云图绘制
                      • 附录
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                      http://www.vxiaotou.com