基于turtle库的圣诞树的绘制

ops/2024/12/13 0:30:30/

        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 = 0for 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 randompen.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)
- 按顺序调用上述函数来绘制圣诞树、装饰、星星和祝福语。
- 隐藏画笔并保持窗口开启。

运行效果

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

自定义提示

  • 颜色调整:你可以根据个人喜好调整树叶、装饰球和背景的颜色。
  • 尺寸调整:通过修改绘制函数中的参数,可以调整圣诞树和装饰的大小。
  • 添加更多元素:例如,添加更多的雪花、礼物盒、彩带等,以使贺卡更加丰富。


http://www.ppmy.cn/ops/141381.html

相关文章

什么是封装性?C++中如何实现封装?封装性的好处是什么?

封装性是面向对象编程(OOP)中的一个重要概念,它指的是将对象的状态(属性)和行为(方法)隐藏在对象内部,只通过公共接口与外部进行交互。这种隐藏机制有助于保护对象的内部状态不被外部…

CSS系列(7)-- 背景与边框详解

前端技术探索系列:CSS 背景与边框详解 🎨 致读者:探索视觉设计的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 背景与边框,学习如何创建丰富多彩的视觉效果。 背景效果详解 🚀 基础背景属…

使用lvgl9 的 Chart (lv_chart) 控件指南

文章目录 前言主体介绍1. **图表概述**2. **样式部分**样式定义 3. **图表功能**图表类型数据系列数据修改更新模式数据点个数轴范围分隔线光标 4. **事件处理**5. **完整示例代码** 总结 前言 图表是数据可视化的重要工具,lv_chart 是 LittlevGL 提供的一个灵活的…

uniapp uni-table最简单固定表头

需求:固定表头数据,在网上找了半天,啥都有,就是一直实现不了,最后更改代码实现 1.效果 2.主要代码讲解完整代码 表格的父级一定要设置高度,不然会错位,我看网上说设置position:fixed…

解决同一IP访问网站请求过多限制的方法

一.网站限制IP的原因和影响 1.网站限制IP原因:保护服务器资源,防止恶意攻击 2.防止过度爬取数据,保护其服务器资源免受恶意攻击 二.对用户访问影响:无法正常访问网站,业务受阻 1.解决方法:降低IP访问速率…

数仓技术hive与oracle对比(五)

附录说明 附录是对测试过程中涉及到的一些操作进行记录和解析。 oracle清除缓存 alter system flush shared_pool; 将使library cache和data dictionary cache以前保存的sql执行计划全部清空,但不会清空共享sql区或者共享pl/sql区里面缓存的最近被执行的条目。刷…

【面试】Spirng的IOC启动流程

面试回答总结 IOC启动流程主要分为:容器创建 -> 配置加载 -> Bean的解析 -> Bean的注册->工厂初始化前置工作->执行bean工厂的后置处理器->bean的后置处理器注册->国际化->事件注册->监听器注册->bean的实例化->完成刷新&#xf…

【MySQL】表的基本查询(下)

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…