基于turtle库的圣诞树的绘制

2024年的圣诞节快要到来了,内心无比的happ呀,以下是使用 Python 的 turtle 模块绘制一个美丽的圣诞节贺卡的代码示例。这个贺卡包含一棵装饰精美的圣诞树、一颗闪亮的星星以及"圣诞快乐"的祝福语。你可以根据需要调整颜色和尺寸以达到理想的效果。

完整代码

复制代码
import turtle

# 设置画布
screen = turtle.Screen()
screen.setup(width=800, height=600)
screen.bgcolor("skyblue")  # 背景颜色
screen.title("圣诞快乐!")

# 创建画笔
pen = turtle.Turtle()
pen.speed(3)  # 画笔速度

def draw_triangle(color, width, height):
    pen.fillcolor(color)
    pen.begin_fill()
    for _ in range(3):
        pen.forward(width)
        pen.left(120)
    pen.end_fill()

def draw_rectangle(color, width, height):
    pen.fillcolor(color)
    pen.begin_fill()
    for _ in range(2):
        pen.forward(width)
        pen.left(90)
        pen.forward(height)
        pen.left(90)
    pen.end_fill()

def draw_star(color, size):
    pen.fillcolor(color)
    pen.begin_fill()
    for _ in range(5):
        pen.forward(size)
        pen.right(144)
        pen.forward(size)
        pen.left(72)
    pen.end_fill()

def draw_circle(color, radius):
    pen.fillcolor(color)
    pen.begin_fill()
    pen.circle(radius)
    pen.end_fill()

def draw_tree():
    pen.penup()
    pen.goto(-50, -150)  # 树干位置
    pen.pendown()
    pen.color("sienna")
    draw_rectangle("sienna", 100, 150)  # 树干

    # 绘制树叶(三个三角形)
    colors = ["forest green", "green", "dark green"]
    y_start = 0
    for color in colors:
        pen.penup()
        pen.goto(-150, y_start)
        pen.pendown()
        pen.color(color)
        draw_triangle(color, 300, 200)
        y_start += 150  # 每个层次往上移动

def draw_decorations():
    import random

    pen.color("red")
    pen.penup()
    decorations = [(-100, 0), (-50, 100), (0, 50), (50, 150), (100, 100), (25, 200), (-75, 175)]
    for pos in decorations:
        pen.goto(pos)
        pen.pendown()
        draw_circle("red", 10)
        pen.penup()

    pen.color("yellow")
    star_positions = [(-80, -30), (0, 20), (80, -30)]
    for pos in star_positions:
        pen.goto(pos)
        pen.pendown()
        draw_circle("yellow", 7)
        pen.penup()

def draw_star_on_top():
    pen.penup()
    pen.goto(-15, 200)
    pen.pendown()
    pen.color("yellow")
    draw_star("yellow", 30)

def write_message():
    pen.penup()
    pen.goto(0, -250)
    pen.color("red")
    pen.pendown()
    pen.write("圣诞快乐!", align="center", font=("Arial", 36, "bold"))

def draw_snowflakes():
    pen.color("white")
    pen.penup()
    for _ in range(20):
        x = random.randint(-390, 390)
        y = random.randint(-280, 280)
        pen.goto(x, y)
        pen.pendown()
        draw_star("", 5)
        pen.penup()

def main():
    draw_tree()
    draw_decorations()
    draw_star_on_top()
    write_message()
    # 可选:绘制雪花
    # draw_snowflakes()
    pen.hideturtle()
    turtle.done()

if __name__ == "__main__":
    main()

效果演示

代码说明

1.初始化画布和画笔

  • 设置画布大小为 800x600,并设置背景颜色为"skyblue"。

  • 创建一个 turtle 对象 pen,并设置其绘画速度。

2.绘制三角形 (draw_triangle)

  • 用于绘制圣诞树的叶子部分。接受颜色、宽度和高度作为参数。

3.绘制矩形 (draw_rectangle)

  • 用于绘制圣诞树的树干。接受颜色、宽度和高度作为参数。

4.绘制星星 (draw_star)

  • 用于绘制树顶的星星或装饰。使用五角星的方式绘制。

5.绘制圆形 (draw_circle)

  • 用于绘制圣诞树上的装饰球。

6.绘制圣诞树 (draw_tree)

  • 首先绘制树干,然后绘制三个层次不同颜色的树叶(三个叠加的三角形)。

7.绘制装饰球 (draw_decorations)

  • 在圣诞树的不同位置绘制红色和黄色的小圆球作为装饰。

8.绘制树顶星星 (draw_star_on_top)

  • 在圣诞树顶部绘制一个较大的黄色星星。

9.写祝福语 (write_message)

  • 在画布底部中央写上"圣诞快乐!"的祝福文字,使用红色字体,字体大小为36号,加粗。

10.绘制雪花 (draw_snowflakes) (可选)

  • 通过在随机位置绘制小星星来模拟雪花效果。此部分代码已注释,如果需要雪花效果,可以取消注释。

11.主函数 (main)

  • 按顺序调用上述函数来绘制圣诞树、装饰、星星和祝福语。

  • 隐藏画笔并保持窗口开启。

运行效果

运行上述代码后,将显示一个带有美丽圣诞树、装饰球、树顶星星以及"圣诞快乐!"字样的贺卡。你可以根据需求进一步美化,例如添加更多装饰、调整颜色、增加雪花效果等。

自定义提示

  • 颜色调整:你可以根据个人喜好调整树叶、装饰球和背景的颜色。
  • 尺寸调整:通过修改绘制函数中的参数,可以调整圣诞树和装饰的大小。
  • 添加更多元素:例如,添加更多的雪花、礼物盒、彩带等,以使贺卡更加丰富。
相关推荐
qq_4026056519 小时前
python爬虫(二) ---- JS动态渲染数据抓取
javascript·爬虫·python
AI数据皮皮侠19 小时前
中国地级市旅游人数、收入数据(2000-2023年)
大数据·人工智能·python·深度学习·机器学习·旅游
mooooon L19 小时前
DAY 43 复习日-2025.10.7
人工智能·pytorch·python·深度学习·神经网络
yzx99101319 小时前
数据库完整指南:从基础到 Django 集成
数据库·python·django
Allen_LVyingbo19 小时前
医疗科研管理系统到院级生命科学平台的升级路径
python·信息可视化·健康医疗·ai编程
MoRanzhi120319 小时前
11. Pandas 数据分类与区间分组(cut 与 qcut)
人工智能·python·机器学习·数学建模·分类·数据挖掘·pandas
码界筑梦坊20 小时前
276-基于Python的爱奇艺视频数据可视化分析系统
开发语言·python·信息可视化
我的xiaodoujiao21 小时前
从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 9--基础知识 5--常用函数 3
前端·python·测试工具·ui
B站计算机毕业设计之家1 天前
智慧交通项目:Python+PySide6 车辆检测系统 YOLOv8+OpenCV 自定义视频 自定义检测区域 (源码+文档)✅
大数据·python·opencv·yolo·智慧交通·交通·车流量
java1234_小锋1 天前
TensorFlow2 Python深度学习 - 深度学习概述
python·深度学习·tensorflow·tensorflow2·python深度学习