当前位置: 首页 > article >正文

使用Python的内置的turtle模块来绘制中秋节快乐场景

使用Python的内置的turtle模块来绘制中秋节快乐场景

中秋节,是中国民间的传统节日。每年农历八月十五庆祝。现在使用Python的内置的turtle模块来绘制中秋节快乐场景。先给出效果图:

再给出源码:

import turtle as t
import random as r

# 设置画布
t.setup(width=800, height=600)
t.bgcolor("navy")  # 设置背景色
t.title("中秋节快乐!")

# 函数:绘制月亮
def draw_moon(x, y, radius):
    t.penup()
    t.goto(x, y - radius)  # 移动到圆的底部
    t.pendown()
    t.color("lightyellow")
    t.begin_fill()
    t.circle(radius)  # 绘制圆
    t.end_fill()

# 函数:绘制星星
def draw_star(x, y, size):
    t.penup()
    t.goto(x, y)  # 移动到星星位置
    t.pendown()
    t.color("white")
    t.begin_fill()
    for _ in range(5):  # 绘制五角星
        t.forward(size)
        t.right(144)  # 转角144度
    t.end_fill()

# 绘制立体月饼
def draw_circle(x, y, radius, color):
    t.penup()
    t.goto(x, y - radius)
    t.pendown()
    t.color(color)
    t.begin_fill()
    t.circle(radius)
    t.end_fill()

def draw_3d_mooncake(x, y, radius):
    # 绘制阴影
    draw_circle(x + 8, y - 8, radius, "#D2B48C")
    
    # 绘制月饼主体
    for i in range(radius, 5, -3):
        color = (1 - i/radius, 0.7 - i/(radius*2), 0.4 - i/(radius*3))
        draw_circle(x, y, i, color)
    
    # 绘制月饼表面花纹
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.color("#8B4513")
    t.setheading(0)
    
    # 在中心写"月"字
    t.penup()
    t.goto(x, y - 9)  # 稍微向下调整以使字符居中
    t.color("#8B4513")  # 使用深褐色
    t.write("月", align="center", font=("Arial", 10, "bold"))

# 绘制月亮
draw_moon(200, 230, 50)

# 随机绘制星星
for _ in range(15):
    x = r.randint(-400, 400)  # 随机 x 坐标
    y = r.randint(0, 250)  # 随机 y 坐标
    draw_star(x, y, r.randint(10, 20))  # 随机星星大小

# 绘制立体月饼
#draw_mooncake(-200, -100)
# 绘制立体感月饼
draw_3d_mooncake(-200, -100, 30)
draw_3d_mooncake(-100, -100, 30)

# 绘制贺词
t.penup()
t.goto(0, -250)
t.color("white")
t.pendown()
t.write("祝大家中秋节快乐!", align="center", font=("Arial", 24, "bold"))

# 完成绘制
t.hideturtle()  # 隐藏海龟
t.done()  # 结束


http://www.kler.cn/a/299988.html

相关文章:

  • Go Fx 和 Java Spring 的区别
  • springboot 调用 c++生成的so库文件
  • 分子动力学模拟里的术语:leap-frog蛙跳算法和‌Velocity-Verlet算法
  • ubuntu k8s 1.31
  • 使用 Python 获取 1688 商品快递费用 API 接口的示例代码解析
  • 靶机复现-pikachu靶机文件包含漏洞
  • 每日一题 二分查找分巧克力
  • 下班后做小红书第7个月,涨粉7w,累计变现5w+,我只用到五个点
  • 微前端 - 对外只开放一个端口
  • 23. C 语言,%d 和 %i的区别
  • Python 数据分析— Pandas 基本操作(下)
  • react js 笔记 3
  • 获取时间,并将时间按一定的格式输出
  • C++:sort自动排序函数
  • cell phone teardown 手机拆卸
  • nvm只有iojs列表解决办法
  • from T2I to T2V
  • 构建响应式 Web 应用:Vue.js 基础指南
  • Kubernetes资源管理常用的标签分类有哪些?
  • IT前端好用的工具集
  • 【科研小白系列】使用screen创建虚拟终端,实现本地关机后服务器仍然跑模型
  • Elasticsearch 使用误区之五——单次请求获取大量数据
  • 实时系统资源监测:AutoPowerOptionsOK确保电脑性能与节能兼备
  • SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能
  • Mysql 数据库免费使用
  • windows七个消息队列