Python与众不同的生日蛋糕(可定制版)

技术

点击关注

picture.image

发现更多精彩内容~

FOCUS ON US

picture.image

写在前面

picture.image

picture.image

小伙伴们最近过得可好吖,有没有想小编呢?这几天小编收到了一些有关生日蛋糕代码的问题,小编把这些问题梳理了一下,感兴趣的小伙伴们快来看看呀,学会了以后给你最好的朋友画一个吧!

picture.image

生日祝福

picture.image

picture.image

要不,咱们先挑选一句生日祝福?

1. 年年有今日,岁岁有今朝。

2. 愿你如阳光,明媚不忧伤。

3. 愿你吃在嘴里,美在心里。

4. 愿你身体健,快乐无烦恼。

5. 愿你梦的远方,温暖为向。

6. 愿时光温柔,多一点幸运。

7. 愿你如月光,明亮不清冷。

8. 愿你幸福笑,如意直到老。

9. 愿你事事顺利,余生皆甜。

**picture.image

绘图入门

picture.image**

**picture.image

既然咱们要画生日蛋糕,那当然需要简单学习一下画画的工具啦~**

Turtle是Python语言中的一个绘图函数库,它可以在屏幕上创建图形和绘制各种形状。使用Turtle,我们可以通过简单的命令来控制一个小乌龟在屏幕上移动,并绘制出我们想要的图形。

要使用Turtle,我们首先需要导入turtle模块。导入模块的方式是在代码的开头添加一行import turtle。接下来,我们需要创建一个Turtle对象来控制乌龟的移动和绘制。创建对象的方式是添加一行t = turtle.Turtle()。我们可以使用Turtle对象的forward()方法来让乌龟往前移动一定的距离,使用backward()方法让乌龟往后移动,使用left()方法让乌龟向左转,使用right()方法让乌龟向右转。除了移动,我们还可以使用Turtle对象的penup()方法将乌龟画笔抬起,使用pendown()方法将乌龟画笔放下,从而控制乌龟是否在移动过程中绘制图形。

通过组合使用上述方法,我们可以绘制出各种形状和图案。下面是一个简单的例子,演示了如何使用Turtle在屏幕上绘制一个正方形:


              
import turtle
              
# 创建Turtle对象
              
t = turtle.Turtle()
              
# 绘制正方形
              
for i in range(4):
              
    t.forward(100)
              
    t.right(90)
              
# 结束绘制
              
turtle.done()
          

在上面的例子中,我们首先导入了turtle模块,然后创建了一个Turtle对象。接着使用循环语句绘制了一个正方形,每次移动100个单位距离,并向右转90度。最后使用turtle.done()方法结束绘制过程。除了绘制基本形状,Turtle还提供了其他一些有用的方法,如circle()方法可以绘制圆形,dot()方法可以绘制一个点,write()方法可以在屏幕上写文字等等。在使用Turtle绘图时,我们可以使用不同的颜色、粗细和样式来装饰图形。Turtle提供了一些用于控制画笔的方法,如pensize()方法可以设置画笔的粗细,pencolor()方法可以设置画笔的颜色,fillcolor()方法可以设置图形的填充颜色等等。使用Turtle可以让我们用简单的代码快速绘制出各种有趣的图形,它十分适合初学者学习编程和图形设计哦!

picture.image

生日蛋糕

picture.image

picture.image

话不多说,直接上代码!

picture.image

完整代码

picture.image


              
import turtle as tu
              
import random as ra
              
import math
              
def draw_x(x, i):
              
    return x * math.cos(math.radians(i))
              
def draw_y(y, i):
              
    return y * math.sin(math.radians(i))
              
def ground_floor(width, height, colors_a, h):
              
    t.penup()
              
    t.goto(width, h)
              
    t.pendown()
              
    t.begin_fill()
              
    t.fillcolor(colors_a[0])
              
    for i in range(360):
              
        x = draw_x(width, i)
              
        y = draw_y(height, i) + h
              
        t.goto(x, y)
              
    t.end_fill()
              
    t.begin_fill()
              
    t.fillcolor(colors_a[1])
              
    for i in range(180):
              
        x = draw_x(width, -i)
              
        y = draw_y(height + 10, -i) + h
              
        t.goto(x, y)
              
    for i in range(180, 360):
              
        x = draw_x(width, i)
              
        y = draw_y(height, i) + h
              
        t.goto(x, y)
              
    t.end_fill()
              
def each_piece(width, height_1, height_2, colors_b, h):
              
    t.penup()
              
    t.goto(width, h)
              
    t.pendown()
              
    t.begin_fill()
              
    t.fillcolor(colors_b[0])
              
    for i in range(360):
              
        x = draw_x(width, i)
              
        y = draw_y(height_1, i) + h
              
        t.goto(x, y)
              
    t.end_fill()
              
    t.begin_fill()
              
    t.fillcolor(colors_b[0])
              
    for i in range(540):
              
        x = draw_x(width, i)
              
        y = draw_y(height_1, i) + height_2 + h
              
        t.goto(x, y)
              
    t.goto(-width, h)
              
    t.end_fill()
              
    t.penup()
              
    t.goto(width - 10, height_2 + h)
              
    t.pendown()
              
    t.begin_fill()
              
    t.fillcolor(colors_b[1])
              
    for i in range(360):
              
        x = draw_x(width - 10, i)
              
        y = draw_y(height_1 * 0.9, i) + height_2 + h
              
        t.goto(x, y)
              
    t.end_fill()
              
    t.penup()
              
    t.goto(width, h)
              
    t.pendown()
              
    t.begin_fill()
              
    t.fillcolor(colors_b[2])
              
    for i in range(180):
              
        x = draw_x(width, -i)
              
        y = draw_y(height_1, -i) + 10 + h
              
        t.goto(x, y)
              
    t.goto(-width, h)
              
    for i in range(180, 360):
              
        x = draw_x(width, i)
              
        y = draw_y(height_1, i) + h
              
        t.goto(x, y)
              
    t.end_fill()
              
    t.penup()
              
    t.goto(width, height_2 + h)
              
    t.pendown()
              
    t.begin_fill()
              
    t.fillcolor(colors_b[3])
              
    for i in range(1800):
              
        x = draw_x(width, 0.1 * i)
              
        y = draw_y(-height_1 * 0.3, i) + h
              
        t.goto(x, y)
              
    t.goto(-width, height_2 + h)
              
    for i in range(180, 360):
              
        x = draw_x(width, i)
              
        y = draw_y(height_1, i) + height_2 + h
              
        t.goto(x, y)
              
    t.end_fill()
              
def candle(width, height, color_c, w, h1, h2):
              
    t.penup()
              
    t.goto(w, h1)
              
    t.pendown()
              
    t.begin_fill()
              
    t.fillcolor(color_c[0])
              
    for i in range(360):
              
        x = draw_x(width, i) + w
              
        y = draw_y(height, i) + h1
              
        t.goto(x, y)
              
    t.goto(width + w, h2)
              
    for i in range(540):
              
        x = draw_x(width, i) + w
              
        y = draw_y(height, i) + h2
              
        t.goto(x, y)
              
    t.goto(-width + w, h1)
              
    t.end_fill()
              
    t.pencolor(color_c[1])
              
    for i in range(1, 6):
              
        t.goto(width + w, h1 + 10 * i)
              
        t.penup()
              
        t.goto(-width + w, h1 + 10 * i)
              
        t.pendown()
              
    t.penup()
              
    t.goto(w, h2)
              
    t.pendown()
              
    t.goto(w, h2)
              
def star(w1, w2, h1, h2, a, color):
              
    t.penup()
              
    x = ra.randint(w1, w2)
              
    y = ra.randint(h1, h2)
              
    c = color
              
    t.goto(x, y)
              
    t.pendown()
              
    t.pencolor(c)
              
    t.begin_fill()
              
    t.fillcolor(c)
              
    for i in range(5):
              
        t.forward(a)
              
        t.right(144)
              
        t.forward(a)
              
        t.left(72)
              
    t.end_fill()
              
def Stars(n, w1, w2, h1, h2, a, c):
              
    for i in range(n):
              
        star(w1, w2, h1, h2, a, c)
              
def Year(w, h, c, o):
              
    t.penup()
              
    t.goto(w, h)
              
    t.pendown()
              
    t.pencolor(c)
              
    t.write(o, font=("Curlz MT", 25, "bold"))
              
colors_a = ['oldlace', 'mistyrose']
              
colors_b = ['lightcyan', 'oldlace', 'pink', 'mistyrose']
              
colors_c = ['skyblue', 'white']
              
tu.setup(0.66, 0.66)
              
tu.screensize(1.0, 0.75)
              
tu.title("生日快乐!")
              
tu.bgcolor('pink')
              
t = tu.Turtle()
              
# tu.tracer(0)
              
t.screen.delay(0)
              
t.hideturtle()
              
t.pencolor("white")
              
ground_floor(160, 30, colors_a, -50)
              
each_piece(120, 30, 40, colors_b, -50)
              
each_piece(90, 20, 30, colors_b, -10)
              
each_piece(60, 10, 20, colors_b, 20)
              
candle(4, 1, colors_c, 15, 40, 100)
              
candle(4, 1, colors_c, -15, 40, 100)
              
Year(-22, 95, 'cyan', '2')
              
Year(8, 95, 'cyan', '0')
              
color = 'yellow'
              
t.penup()
              
t.goto(-250, 200)
              
t.pendown()
              
t.pencolor("cyan")
              
t.write("Happy Birthday!", font=("Curlz MT", 50, "bold"))
              
t.penup()
              
t.goto(250, -150)
              
t.pendown()
              
t.pencolor("white")
              
t.write("by~爱你的某某", font=("黑体", 20, "bold"))
              
Stars(199, -500, 500, -500, 500, 3, color)
              
tu.mainloop()
          

**picture.image

下载代码

picture.image

picture.image

关键词:python028

提取码:2ppt

picture.image

程序分析

picture.image**

picture.image

这段代码使用Turtle模块绘制了一个生日蛋糕:

  1. 导入了turtle和random模块,并定义了一个数学函数math。

  2. 定义了两个函数draw_x和draw_y,用来计算坐标值。

  3. 定义了一个绘制地板的函数ground_floor,接受盘子的宽度、高度、颜色列表和高度偏移量作为参数。函数使用for循环绘制了盘子的两个颜色部分。

  4. 定义了一个绘制每个蛋糕层的函数each_piece,接受蛋糕层的宽度、高度1、高度2、颜色列表和高度偏移量作为参数。函数使用for循环绘制了蛋糕层的各个部分。

  5. 定义了一个绘制蜡烛的函数candle,接受蜡烛的宽度、高度、颜色列表和坐标偏移量作为参数。函数使用for循环绘制了蜡烛的形状,然后使用for循环绘制蜡烛的火焰。

  6. 定义了一个绘制星星的函数star,接受星星的坐标范围、边长和颜色作为参数。函数随机选择一个坐标位置,并绘制了一个填充颜色的五角星。

  7. 定义了一个绘制多个星星的函数Stars,接受星星的数量、坐标范围、边长和颜色作为参数。函数使用for循环调用star函数绘制了多个星星。

  8. 定义了一个显示年份的函数Year,接受坐标位置、颜色和年份作为参数。函数在指定位置绘制了指定颜色和字体的年份。

  9. 定义了一个盘子颜色列表colors_a、蛋糕层颜色列表colors_b和蜡烛颜色列表colors_c。

  10. 设置了绘图窗口的大小和标题,设置了背景颜色。

  11. 创建了一个Turtle对象t,并隐藏了它的图标。

  12. 调用各个函数绘制了场景,包括地板、蛋糕层、蜡烛、年份、标题和星星。

  13. 调用mainloop函数进入事件循环,保持窗口的显示状态。

**picture.image

运行结果

picture.image**

picture.image

picture.image

为您定制

picture.image

picture.image

1.修改标题:"生日快乐!"

picture.image

picture.image

修改代码第 164 行的文字即可

picture.image

picture.image

2.修改文字:"Happy Birthday!"

picture.image

picture.image

修改代码第184行的文字即可

picture.image

picture.image

3.修改文字:"by~爱你的某某"

picture.image

picture.image

修改代码第189行的文字即可

picture.image

picture.image

4.修改蜡烛上的数字:"20"

picture.image

picture.image

修改代码第177和178行的文字即可

picture.image

picture.image

⭐修改画笔速度

picture.image

修改代码第167和168行:

picture.image

其中:


            
                

              tu.tracer(0)
            
          

表示 一下子画完 ,如果不想一下子画完,可以把这句代码删掉哦~


            
                

              t.screen.delay(0)
            
          

表示 加速画 ,如果不想加速画,可以把这句代码删掉哦~

当两句代码都删掉就是最慢速度画啦!(但是会很慢哦,个人还是建议保留第168行的代码)

当然啦,也可以使用下面的代码 替换掉167和168行 的代码 :


            
                

              t.speed(0)
            
          

这里的0可以换成0~10内的数字哦, 数字越大画得越快

picture.image

5.其他

picture.image

在代码的165行可以修改蛋糕的颜色:(需要输入颜色的英文)

picture.image

在代码的162行可以修改整个窗口的大小:(需要输入0-1之间的小数)

picture.image

picture.image

推荐文章

picture.image

picture.image

Python李峋同款爱心代码(可写字版)

一起来看流星雨吧!(含表白界面)

我用python实现了一只呆萌的喜羊羊!

张万森,下雪了(Python)

今年跨年一起去看python烟花秀吧!

C语言满屏飘字表白代码(可修改文案)

“如果你有空,陪我过个冬吧”

浪漫的HTML跳动爱心代码(满屏飘字)

picture.image

写在后面

picture.image

picture.image

我是一只有趣的兔子,感谢你的喜欢!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎边缘渲染的探索与实践 | 第 11 期边缘云主题Meetup
《火山引擎边缘渲染的探索与实践》黄旭能|火山引擎边缘渲染产品经理
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论