点击蓝字 关注我们

哈喽,小朋友们!今天我们要进入一个甜蜜的编程世界啦!想象一下,你能通过代码画出一个漂亮的多层蛋糕,有巧克力层、草莓层,还有美味的糖霜,最后在顶部加上一颗闪亮的星星!是不是听起来很有趣?今天我们就用Python的turtle模块来制作一个这样的蛋糕,让我们一起开始这场甜蜜的编程冒险吧!

真正的课程导入语:同学们!有没有想过自己能成为一个编程小厨师,用代码制作出美味的蛋糕?今天的Python课堂,我们就要解锁超酷的"蛋糕绘制"程序!想象一下:你亲手编写代码,画出一层层的蛋糕,涂上不同的颜色,加上漂亮的糖霜,最后在顶部点缀一颗星星。这一切都能在Python里实现!通过这节课,我们会学会函数定义、字典使用、循环控制、坐标计算这些核心编程技巧,更能锻炼创造力和逻辑思维。接下来,就让我们一起化身小小编程厨师,用代码搭建属于自己的甜蜜蛋糕,看看谁能做出最漂亮的蛋糕!准备好开启这场编程美食之旅了吗?现在,Let's code!

(扫码运行代码体验)
程序运行后,会弹出一个蓝色背景的窗口
在窗口中央,会出现一个白色的盘子
盘子上会逐渐画出一个多层蛋糕:
底层是巧克力色的蛋糕
上面是粉色的草莓层
再上面是白色的糖霜
然后是另一层巧克力蛋糕
再是草莓层和糖霜
最上面是更小的巧克力层和草莓层,再加上糖霜
蛋糕的中心会竖起一根绿色的柱子
柱子顶部会有一颗白色的五角星
整个蛋糕看起来就像一个漂亮的生日蛋糕!
turtle模块:用来画出蛋糕的各个部分,就像我们的画笔一样
math模块:用来计算糖霜的波浪形状,让蛋糕看起来更美味
蛋糕绘制程序逻辑├── 程序初始化│ ├── 导入turtle和math模块│ ├── 创建turtle画笔对象│ └── 设置画布背景为蓝色├── 函数定义│ ├── draw_circle():画圆形│ ├── draw_rectangle():画矩形(蛋糕层)│ ├── draw_star():画五角星(蛋糕顶装饰)│ └── addIcing():画糖霜(波浪形状)├── 食材颜色字典│ ├── 定义不同食材的颜色│ ├── 草莓层是粉色│ ├── 巧克力层是棕色│ ├── 抹茶层是绿色│ └── 糖霜是白色├── 蛋糕绘制│ ├── 画白色的盘子│ ├── 画第一层巧克力蛋糕│ ├── 画第一层草莓蛋糕│ ├── 画第一层糖霜│ ├── 画第二层巧克力蛋糕│ ├── 画第二层草莓蛋糕│ ├── 画第二层糖霜│ ├── 画第三层巧克力蛋糕│ ├── 画第三层草莓蛋糕│ ├── 画第三层糖霜│ ├── 画抹茶柱子│ └── 画顶部的五角星└── 程序结束 └── 等待用户关闭窗口
文件结构:
第一部分:导入模块和定义函数
第二部分:初始化画笔和画布
第三部分:定义食材颜色字典
第四部分:绘制蛋糕的各个部分
第五部分:结束程序
功能:画一个圆形
参数:
turtle:使用的画笔
color:圆形的颜色
x, y:圆心的坐标
radius:圆的半径
代码解析:
抬起画笔,移动到圆心位置,放下画笔,开始填充颜色,画一个圆形,结束填充
为什么这样写:这样我们就可以在任何位置画不同颜色和大小的圆形了,比如可以用来画樱桃或者其他装饰。
功能:画一个矩形,用来做蛋糕的每一层
参数:
turtle:使用的画笔
color:矩形的颜色
x, y:矩形左下角的坐标
width:矩形的宽度
height:矩形的高度
代码解析:
隐藏画笔,抬起画笔,移动到起始位置,放下画笔,开始填充颜色,画一个矩形(通过循环移动和转向),结束填充,将画笔方向重置为初始方向
为什么这样写:这样我们就可以画出不同颜色、不同大小的蛋糕层了,每一层都是一个矩形。
功能:画一个五角星,用来装饰蛋糕顶部
参数:
turtle:使用的画笔
color:五角星的颜色
x, y:五角星中心的坐标
size:五角星的大小
代码解析:
抬起画笔,移动到起始位置,放下画笔,开始填充颜色,通过循环画五条边,结束填充,将画笔方向重置为初始方向
为什么这样写:五角星是一个特殊的形状,需要通过特定的角度和边长来绘制,这样我们就可以在蛋糕顶部加上一个漂亮的星星装饰了。
功能:画糖霜,让蛋糕看起来更美味
参数:
turtle:使用的画笔
color:糖霜的颜色
x, y:糖霜的中心位置
代码解析:
抬起画笔,移动到糖霜的左端,放下画笔,开始填充颜色,通过循环计算每个点的位置,画出波浪形的糖霜,移动到糖霜的右端,再移动回左端,结束填充
为什么这样写:糖霜不是平的,而是有波浪形的,这样看起来更真实、更美味。我们用数学计算来画出这个波浪形状。
初始化部分:
创建一个画笔对象,名字叫myPen
设置画笔的形状为小海龟
设置画笔的速度为10(最快)
隐藏画笔(这样画图时不会看到画笔移动)
创建一个窗口,背景颜色设置为蓝色(就像天空一样)
设置初始的y坐标为-140(蛋糕的底部位置)
食材颜色字典:
创建一个空字典,然后添加不同食材的颜色
草莓是粉色,牛奶巧克力是棕色,抹茶是绿色,糖霜是白色
这样我们就可以通过食材的名字来获取对应的颜色,比如ingredients["strawberry"]就是粉色
蛋糕绘制过程:
画盘子:调用draw_rectangle函数画一个白色的矩形作为盘子
第一层:画一个巧克力色的矩形,然后画一个草莓色的矩形在上面
加第一层糖霜:调用addIcing函数画波浪形的糖霜
第二层:画一个更小的巧克力色矩形,然后画一个草莓色的矩形在上面
加第二层糖霜:再次调用addIcing函数
第三层:画一个更小的巧克力色矩形,然后画一个草莓色的矩形在上面
加第三层糖霜:再次调用addIcing函数
画抹茶柱子:在蛋糕中心画一个绿色的矩形作为柱子
画星星:在柱子顶部画一个白色的五角星
结束程序:
调用done()函数,让窗口保持打开状态,直到用户关闭它
fromturtleimport*importmath
解析:
from turtle import *:导入turtle模块的所有功能,这样我们就可以直接使用turtle的函数,不用写turtle.前缀
import math:导入math模块,用来计算糖霜的波浪形状
defdraw_circle(turtle, color, x, y, radius):turtle.penup()turtle.color(color)turtle.fillcolor(color)turtle.goto(x, y)turtle.pendown()turtle.begin_fill()turtle.circle(radius)turtle.end_fill()
解析:
def draw_circle(...)::定义一个函数,名字叫draw_circle,有5个参数
turtle.penup():抬起画笔,这样移动时不会留下痕迹
turtle.color(color):设置画笔的颜色
turtle.fillcolor(color):设置填充的颜色
turtle.goto(x, y):移动到指定的坐标
turtle.pendown():放下画笔,准备开始画画
turtle.begin_fill():开始填充颜色
turtle.circle(radius):画一个半径为radius的圆形
turtle.end_fill():结束填充颜色
defdraw_rectangle(turtle, color, x, y, width, height):turtle.hideturtle()turtle.penup()turtle.color(color)turtle.fillcolor(color)turtle.goto(x, y)turtle.pendown()turtle.begin_fill()foriinrange(2):turtle.forward(width)turtle.left(90)turtle.forward(height)turtle.left(90)turtle.end_fill()turtle.setheading(0)
解析:
turtle.hideturtle():隐藏画笔的形状
for i in range(2)::循环2次,因为矩形有4条边,每次画2条边
turtle.forward(width):向前移动width的距离
turtle.left(90):向左转90度
turtle.setheading(0):将画笔方向设置为向右(初始方向)
defdraw_star(turtle, color, x, y, size):turtle.penup()turtle.color(color)turtle.fillcolor(color)turtle.goto(x, y)turtle.pendown()turtle.begin_fill()turtle.right(144)foriinrange(5):turtle.forward(size)turtle.right(144)turtle.forward(size)turtle.end_fill()turtle.setheading(0)
解析:
turtle.right(144):一开始向右转144度,这是为了让五角星的尖角朝上
for i in range(5)::循环5次,因为五角星有5个角
每次循环画两条边,所以总共画10条边,形成五角星的形状
defaddIcing(turtle, color, x, y):turtle.penup()turtle.color(color)turtle.fillcolor(color)turtle.goto(-x-2, y+10)turtle.pendown()turtle.begin_fill()forzinrange(-x-3, x+3):turtle.goto(z, y-10-10*math.cos((z/100) *2*math.pi))turtle.goto(x+3, y+10)turtle.goto(-x-3, y+10)turtle.end_fill()
解析:
turtle.goto(-x - 2, y + 10):移动到糖霜的左端
for z in range(-x - 3, x + 3)::从左端到右端循环,每次移动一个单位
turtle.goto(z, y - 10 - 10 * math.cos((z / 100) * 2 * math.pi)):计算每个点的y坐标,使用cos函数生成波浪形
math.cos((z / 100) * 2 * math.pi):这是一个余弦函数,会生成一个波浪形的曲线
myPen = Turtle()myPen.shape("turtle")myPen.speed(10)myPen.hideturtle()window = Screen()window.bgcolor("#69D9FF")y = -140
解析:
创建一个turtle对象叫myPen
设置它的形状为小海龟
设置速度为10(最快)
隐藏画笔
创建一个窗口,背景颜色设置为浅蓝色
设置y坐标为-140(蛋糕底部的位置)
ingredients = {}ingredients["strawberry"] = "pink"ingredients["milk chocolate"] = "#BF671F"ingredients["matcha"] = "#93c572"ingredients["icing sugar"] = "#FFFFFF"
解析:
创建一个空字典叫ingredients
添加键值对,键是食材的名字,值是对应的颜色
这样我们就可以通过食材的名字来获取颜色,比如ingredients["strawberry"]就是"pink"
# let's draw the platedraw_rectangle(myPen, "white", -150, y-10, +300, 10)# Iterate through each layer of the listdraw_rectangle(myPen, ingredients["milk chocolate"], -120, y, 240, 30)y += 30draw_rectangle(myPen, ingredients["strawberry"], -120, y, 240, 35)y += 35addIcing(myPen, ingredients["icing sugar"], 120, y)y += 10draw_rectangle(myPen, ingredients["milk chocolate"], -100, y, 200, 20)y += 20draw_rectangle(myPen, ingredients["strawberry"], -100, y, 200, 40)y += 40addIcing(myPen, ingredients["icing sugar"], 100, y)y += 10draw_rectangle(myPen, ingredients["milk chocolate"], -70, y, 140, 24)y += 24draw_rectangle(myPen, ingredients["strawberry"], -70, y, 140, 36)y += 36addIcing(myPen, ingredients["icing sugar"], 70, y)y += 10draw_rectangle(myPen, ingredients["matcha"], -4, y, 8, 60)y += 65draw_star(myPen, "white", 2, y, 10)
解析:
画盘子:调用draw_rectangle画一个白色的矩形
第一层:画一个巧克力色的矩形,然后画一个草莓色的矩形在上面
加第一层糖霜:调用addIcing函数画波浪形的糖霜
第二层:画一个更小的巧克力色矩形,然后画一个草莓色的矩形在上面
加第二层糖霜:再次调用addIcing函数
第三层:画一个更小的巧克力色矩形,然后画一个草莓色的矩形在上面
加第三层糖霜:再次调用addIcing函数
画抹茶柱子:在蛋糕中心画一个绿色的矩形作为柱子
画星星:在柱子顶部画一个白色的五角星
done()解析:
调用done()函数,让窗口保持打开状态,直到用户关闭它
这样用户就可以欣赏自己画出的蛋糕了
通过分析这个蛋糕绘制程序,我们学到了以下重要的编程概念:
函数的作用:函数就像一个魔法盒子,你给它一些材料(参数),它就会按照里面的咒语(代码)变出一个结果。比如draw_rectangle函数,你给它颜色和坐标,它就会画出一个矩形。
为什么要用函数:如果我们每次画矩形都要写一遍相同的代码,会很麻烦。用函数可以把重复的代码封装起来,需要的时候只需要调用函数就可以了,就像我们有一个专门画矩形的魔法盒子,要用的时候拿出来用一下。
字典的作用:字典就像一个小本子,上面记着不同东西的信息。比如我们的ingredients字典,记着不同食材的颜色,要找草莓的颜色,只要查一下本子(字典)就知道了。
为什么要用字典:如果不用字典,我们可能会忘记哪个食材对应什么颜色,用字典可以让我们通过名字快速找到颜色,就像查字典一样方便。
循环的作用:循环就像我们每天早上的例行公事,比如刷牙、洗脸、吃早饭,这些步骤会重复做。在程序中,循环可以让我们重复执行一些操作,比如draw_star函数中的for循环,重复5次来画五角星的5个角。
为什么要用循环:如果没有循环,我们要画五角星就要写5次相同的代码,有了循环,只需要写一次代码,让它重复执行5次就可以了,既节省时间又减少错误。
坐标的作用:在turtle中,每个点都有一个坐标(x, y),就像我们在地图上找位置一样。x是左右位置,y是上下位置。
为什么要用坐标:通过设置不同的坐标,我们可以让蛋糕的每一层都画在正确的位置,看起来更整齐、更漂亮。
cos函数的作用:在addIcing函数中,我们使用了math.cos函数来计算糖霜的波浪形状。cos函数可以生成一个平滑的波浪线,让糖霜看起来更自然、更美味。
为什么要用数学函数:数学函数可以帮助我们创建一些特殊的形状,比如波浪形、圆形、弧形等,让我们的蛋糕看起来更真实。
如果想让蛋糕更漂亮,你可以尝试添加以下功能:
添加樱桃:在蛋糕顶部添加红色的圆形作为樱桃
添加蜡烛:在蛋糕上添加几根蜡烛,甚至可以让蜡烛闪烁
添加文字:在蛋糕上写出"Happy Birthday"或者其他祝福语
添加更多层:尝试添加更多的蛋糕层,让蛋糕更高
添加不同的颜色:尝试使用不同的颜色组合,创造出独一无二的蛋糕
添加背景:在窗口中添加一些装饰,比如气球、彩带等
今天我们通过Python的turtle模块制作了一个漂亮的多层蛋糕,学习了以下编程知识:
函数定义:学会了如何创建和调用函数,让代码更简洁、更有条理
字典使用:学会了如何使用字典来存储和获取信息,比如食材和颜色的对应关系
循环控制:学会了如何使用for循环来重复执行操作,比如画五角星的5个角
坐标计算:学会了如何使用坐标来定位图形的位置,让蛋糕的每一层都画在正确的地方
数学函数:学会了如何使用cos函数来创建波浪形的糖霜,让蛋糕看起来更美味
颜色搭配:学会了如何选择和搭配颜色,让蛋糕看起来更漂亮
最重要的是,我们学会了如何将创意通过代码实现出来,就像一个编程小厨师一样,用代码作为工具,制作出属于自己的甜蜜作品。希望小朋友们能够发挥想象力,创造出更多有趣的作品!
如果你有任何问题,或者想分享你的蛋糕作品,欢迎在评论区留言哦!我们下期再见~拜拜~
喜欢这篇文章的话,记得点赞、收藏、转发给你的小伙伴们哦!我们下期再见!👋

。即使下载了,也要上传,不是特别方便,尤其是不好查找。

关注即可领取,下载不限速,方便快捷。



微信号|scratch-coco