纪念日python代码(文字,BGM,动画,玫瑰)

# @Time: 2022/11/18 21:06
# @Author: huihuiのbo
# @File:demo1.py
# @Software:PyCharm
import turtle
import time
from turtle import *
# 实现清屏
def clear_screen():
    turtle.penup()             #画笔抬起
    turtle.goto(0,0)        #定位到(0,0)
    turtle.color('white')
    turtle.pensize(800)         #画笔粗细
    turtle.pendown()           #画笔落下
    turtle.setheading(0)        #设置朝向
    turtle.fd(300)       #前进
    turtle.bk(600)      #后退

# 初始化海龟的位置
def go_start(x, y, state):
    turtle.pendown() if state else turtle.penup()
    turtle.goto(x, y)

#画线,state为真时海龟回到原点,为假时不回到原来的出发点
def draw_line(length, angle, state):
    turtle.pensize(1)
    turtle.pendown()
    turtle.setheading(angle)
    turtle.fd(length)
    turtle.bk(length) if state else turtle.penup()
    turtle.penup()

# 画出发射爱心的小人
def draw_people(x, y):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    turtle.pensize(2)
    turtle.color('black')
    turtle.setheading(0)
    turtle.circle(35, 360)
    turtle.penup()
    turtle.pensize(3)
    turtle.setheading(90)
    turtle.fd(45)
    turtle.setheading(180)
    turtle.fd(20)
    turtle.setheading(0)
    turtle.fd(35)
    turtle.pendown()
    turtle.circle(4, 360)
    turtle.penup()
    turtle.goto(x, y)
    turtle.pensize(2)
    turtle.setheading(0)
    turtle.fd(20)
    turtle.setheading(90)
    turtle.fd(20)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.circle(5, 180)
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.fd(20)
    turtle.setheading(0)
    turtle.fd(35)
    turtle.setheading(60)
    turtle.fd(10)
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.fd(40)
    turtle.setheading(0)
    turtle.fd(35)
    turtle.setheading(-60)
    turtle.fd(10)
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(-90)
    turtle.pendown()
    turtle.fd(60)
    turtle.setheading(-135)
    turtle.fd(60)
    turtle.bk(60)
    turtle.setheading(-45)
    turtle.fd(30)
    turtle.setheading(-135)
    turtle.fd(35)
    turtle.penup()


# 画爱心
def draw_heart(size):
    turtle.color('red', 'pink')
    turtle.pensize(2)
    turtle.pendown()
    turtle.setheading(150)
    turtle.begin_fill()
    turtle.fd(size)
    turtle.circle(size * -3.745, 45)
    turtle.circle(size * -1.431, 165)
    turtle.left(120)
    turtle.circle(size * -1.431, 165)
    turtle.circle(size * -3.745, 45)
    turtle.fd(size)
    turtle.end_fill()

# 画箭羽
def draw_feather(size):
    angle = 30  # 箭的倾角
    feather_num = size // 6    # 羽毛的数量
    feather_length = size // 3     # 羽毛的长度
    feather_gap = size // 10     # 羽毛的间隔
    for i in range(feather_num):
        draw_line(feather_gap, angle + 180, False)  # 箭柄,不折返
        draw_line(feather_length, angle + 145, True)  # 羽翼,要折返
    draw_line(feather_length, angle + 145, False)
    draw_line(feather_num * feather_gap, angle, False)
    draw_line(feather_length, angle + 145 + 180, False)
    for i in range(feather_num):
        draw_line(feather_gap, angle + 180, False)   # 箭柄,不折返
        draw_line(feather_length, angle - 145, True)    # 羽翼,要折返
    draw_line(feather_length, angle - 145, False)
    draw_line(feather_num * feather_gap, angle, False)
    draw_line(feather_length, angle - 145 + 180, False)

# 画一箭穿心,最后箭的头没有画出来,用海龟来代替
def arrow_heart(x, y, size):
    go_start(x, y, False)
    draw_heart(size * 1.15)
    turtle.setheading(-150)
    turtle.penup()
    turtle.fd(size * 2.2)
    draw_heart(size)
    turtle.penup()
    turtle.setheading(150)
    turtle.fd(size * 2.2)
    turtle.color('black')
    draw_feather(size)
    turtle.pensize(4)
    turtle.setheading(30)
    turtle.pendown()
    turtle.fd(size * 2)
    turtle.penup()
    turtle.setheading(29)
    turtle.fd(size * 5.7)
    turtle.color('black')
    turtle.pensize(4)
    turtle.pendown()
    turtle.fd(size * 1.2)

#显示倒数3,2,1
def draw_0(i):
    turtle.speed(0)
    turtle.penup()
    turtle.hideturtle()  # 隐藏箭头显示
    turtle.goto(-50, -100)
    turtle.color('red')
    write = turtle.write(i, font=('华光胖头鱼_CNKI', 200, 'normal'))
    time.sleep(2)

# 显示文字
def draw_1():
    turtle.penup()
    turtle.hideturtle()    #隐藏箭头显示
    turtle.goto(-400, 150)
    turtle.color('red')
    write = turtle.write('💕送给💕', font=('华光彩云_CNKI', 35, 'normal'))
    time.sleep(3)
    turtle.goto(-330, 0)
    turtle.color('red')
    write = turtle.write('ღ💕慧慧小朋友💕ღ', font=('华光胖头鱼_CNKI', 55, 'normal'))
    time.sleep(4)
    turtle.goto(280, -180)
    turtle.color('red')
    write = turtle.write('盖章\n签字', font=('华光淡古印_CNKI', 25, 'normal'))
    time.sleep(5)

# 显示发射爱心的小人儿
def draw_2():
    turtle.speed(1)
    draw_people(-250, 20)
    turtle.penup()
    turtle.goto(-150, -30)
    draw_heart(14)
    turtle.penup()
    turtle.goto(-20, -60)
    draw_heart(25)
    turtle.penup()
    turtle.goto(205, -100)
    draw_heart(43)
    turtle.hideturtle()
    time.sleep(2)

def draw_3():
    turtle.penup()
    turtle.hideturtle()  # 隐藏箭头显示
    turtle.goto(-400, 180)
    turtle.color('red')
    write = turtle.write('❦❦❦❦❦❦❦❦❦❦❦❦❦', font=('宋体', 45, 'normal'))
    turtle.penup()
    time.sleep(2)
    turtle.goto(-400, 80)
    write = turtle.write(' 💕💕💕💕💕💕💕💕💕💕', font=('华光胖头鱼_CNKI', 45, 'normal'))
    turtle.penup()
    time.sleep(2)
    turtle.goto(-400, 0)
    write = turtle.write('    ღ💕宝贝老婆200天快乐喔💕ღ', font=('华光胖头鱼_CNKI', 35, 'normal'))
    time.sleep(2)
    turtle.goto(-400, -100)
    write = turtle.write(' 💕💕💕💕💕💕💕💕💕💕', font=('华光胖头鱼_CNKI', 45, 'normal'))
    time.sleep(2)
    turtle.goto(-400, -180)
    write = turtle.write('♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠', font=('华光胖头鱼_CNKI', 45, 'normal'))
    turtle.penup()
    time.sleep(5)


# 显示一箭穿心
def draw_4():
    turtle.speed(1)
    turtle.penup()
    turtle.goto(-210, -200)
    turtle.color('blue')
    turtle.pendown()
    turtle.write('男生姓名     女生姓名', font=('华文琥珀', 50, 'normal'))
    turtle.speed(3)
    turtle.penup()
    turtle.color("red")
    turtle.goto(0, -200)
    turtle.write('❤',font=('wisdom', 50, 'normal'))
    arrow_heart(20, -60, 51)
    turtle.showturtle()

# 玫瑰
def draw_5():
    # 设置绘制起点
    setup(900, 700)
    # 画笔颜色
    pencolor("red")
    hideturtle()
    penup()
    goto(0, 280)
    pendown()
    left(135)
    speed(0)
    # 左侧弧形绘制
    a = 0.2
    for i in range(80):
        if i < 50:
            pensize(a)
            forward(2)
            a += 0.15
            if i < 10:
                left(0.7)
            elif 10 < i < 24:
                left(1)
            elif 24 < i < 40:
                left(3)
            elif 40 < i < 50:
                left(4)
        elif i >= 50:
            pensize(a)
            forward(2.2)
            a -= 0.25
            if 50 < i < 65:
                left(6.7)
            elif 65 < i < 80:
                left(2)
    setheading(0)
    penup()
    goto(40, 305)
    pendown()
    left(145)
    # 右侧弧形绘制
    a = 0.1
    for i in range(100):
        if i < 60:
            pensize(a)
            forward(3)
            a += 0.15
            if i < 10:
                left(0.8)
            elif 10 < i < 24:
                left(0.8)
            elif 24 < i < 40:
                left(1.7)
            elif 40 < i < 60:
                left(2.2)
        elif i >= 60:
            pensize(a)
            forward(2.4)
            a -= 0.15
            if 60 < i < 85:
                left(3.2)
            elif 85 < i < 90:
                left(4)
    setheading(0)
    penup()
    goto(45, 320)
    pendown()
    left(10)
    a = 0.1
    for i in range(100):
        if i < 60:
            pensize(a)
            forward(3)
            a += 0.15
            if i < 17:
                right(3.2)
            elif 17 < i < 20:
                right(3.5)
            elif 20 < i < 40:
                right(6.8)
            elif 40 < i < 50:
                right(0.6)
            elif 50 < i < 60:
                left(1)
        elif i >= 60:
            pensize(a)
            forward(2.4)
            a -= 0.16
            if 60 < i < 85:
                left(0.4)
            elif 85 < i < 90:
                left(1)
    setheading(0)
    penup()
    goto(-135, 265)
    pendown()
    left(160)
    a = 0.1
    for i in range(120):
        if i < 60:
            pensize(a)
            forward(3)
            a += 0.15
            if i < 10:
                left(2)
            elif 10 < i < 15:
                left(8)
            elif 15 < i < 35:
                left(6)
            elif 35 < i < 40:
                left(4)
            elif 40 < i < 60:
                left(1)
        elif i >= 60:
            pensize(a)
            forward(3)
            a -= 0.15
            if 60 < i < 90:
                right(0.4)
            elif 90 < i < 120:
                right(0.8)
    setheading(0)
    penup()
    goto(80, 250)
    pendown()
    left(245)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(1.2)
            a += 0.15
            if i < 15:
                left(0.6)
            elif 15 < i < 40:
                left(0.3)
        elif i >= 40:
            pensize(a)
            forward(1.2)
            a -= 0.15
            if 40 < i < 65:
                left(0.6)
            elif 65 < i < 80:
                left(0.35)
    setheading(0)
    penup()
    goto(-150, 195)
    pendown()
    left(300)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(1.2)
            a += 0.16
            if i < 15:
                right(0.6)
            elif 15 < i < 40:
                right(0.3)
        elif i >= 40:
            pensize(a)
            forward(1.2)
            a -= 0.16
            if 40 < i < 65:
                right(0.6)
            elif 65 < i < 80:
                right(0.35)
    setheading(0)
    penup()
    goto(-205, 225)
    pendown()
    left(194)
    a = 0.1
    for i in range(100):
        if i < 50:
            pensize(a)
            forward(3)
            a += 0.15
            if i < 10:
                left(7)
            elif 10 < i < 30:
                left(3)
            elif 30 < i < 50:
                left(0.1)
        elif i >= 50:
            pensize(a)
            forward(3)
            a -= 0.15
            if 50 < i < 80:
                right(0.3)
            elif 80 < i < 100:
                right(0.6)
    setheading(0)
    penup()
    goto(110, 280)
    pendown()
    left(6)
    a = 0.1
    for i in range(120):
        if i < 60:
            pensize(a)
            forward(3)
            a += 0.15
            if i < 10:
                right(4.5)
            elif 10 < i < 30:
                right(5)
            elif 30 < i < 60:
                right(0.1)
        elif i >= 60:
            pensize(a)
            forward(3)
            a -= 0.15
            if 50 < i < 80:
                left(0.6)
            elif 80 < i < 100:
                left(0.9)
    setheading(0)
    penup()
    goto(-160, 110)
    pendown()
    left(283)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(2.4)
            a += 0.15
            if i < 10:
                right(0.6)
            elif 15 < i < 40:
                right(0.1)
        elif i >= 40:
            pensize(a)
            forward(2.4)
            a -= 0.15
            if 40 < i < 65:
                left(2)
            elif 65 < i < 80:
                left(3)
    setheading(0)
    penup()
    goto(90, 155)
    pendown()
    left(258)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(3)
            a += 0.15
            if i < 10:
                left(0.8)
            elif 15 < i < 40:
                left(0.1)
        elif i >= 40:
            pensize(a)
            forward(3)
            a -= 0.15
            if 40 < i < 65:
                right(2)
            elif 65 < i < 80:
                right(3)
    setheading(0)
    penup()
    goto(-60, -45)
    pendown()
    right(9)
    a = 0.2
    for i in range(40):
        if i < 20:
            pensize(a)
            forward(1.3)
            a += 0.15
            if i < 5:
                left(0.7)
            elif 5 < i < 20:
                left(0.4)
        elif i >= 20:
            pensize(a)
            forward(1.3)
            a -= 0.15
            if 20 < i < 35:
                left(0.7)
            elif 35 < i < 40:
                left(0.4)
    setheading(0)
    penup()
    goto(-70, -55)
    pencolor("green")
    pendown()
    right(170)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(2)
            a += 0.15
            if i < 25:
                right(0.5)
            elif 25 < i < 40:
                right(1)
        elif i >= 40:
            pensize(a)
            forward(2.5)
            a -= 0.15
            if 40 < i < 55:
                right(1)
            elif 55 < i < 70:
                right(2)
            elif 70 < i < 80:
                right(1)
    setheading(270)
    left(30)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(2.5)
            a += 0.15
            if i < 25:
                left(0.5)
            elif 25 < i < 40:
                left(1)
        elif i >= 40:
            pensize(a)
            forward(3)
            a -= 0.15
            if 40 < i < 55:
                left(2)
            elif 55 < i < 70:
                left(1.3)
            elif 70 < i < 80:
                left(1)
    setheading(270)
    penup()
    goto(20, -55)
    pendown()
    left(65)
    a = 0.2
    for i in range(60):
        if i < 30:
            pensize(a)
            forward(2)
            a += 0.15
            if i < 15:
                left(1)
            elif 15 < i < 30:
                left(2)
        elif i >= 30:
            pensize(a)
            forward(2.5)
            a -= 0.15
            if 30 < i < 45:
                left(2)
            elif 45 < i < 50:
                left(2.5)
            elif 50 < i < 60:
                left(1.5)
    setheading(270)
    right(17)
    a = 0.2
    for i in range(80):
        if i < 40:
            pensize(a)
            forward(2.2)
            a += 0.15
            if i < 25:
                right(1)
            elif 25 < i < 40:
                right(2)
        elif i >= 40:
            pensize(a)
            forward(2.5)
            a -= 0.15
            if 40 < i < 55:
                right(2)
            elif 55 < i < 70:
                right(1.5)
            elif 70 < i < 80:
                right(0.6)
    setheading(0)
    penup()
    pencolor("brown")
    goto(-49, -90)
    pendown()
    right(89)
    a = 1
    for i in range(120):
        if i < 60:
            pensize(a)
            forward(3.5)
            a += 0.08
        elif i >= 60:
            pensize(a)
            forward(3.5)
            a -= 0.08
    setheading(0)
    penup()
    goto(-16, -70)
    pendown()
    right(91)
    a = 1
    for i in range(120):
        if i < 60:
            pensize(a)
            forward(3.5)
            a += 0.08
        elif i >= 60:
            pensize(a)
            forward(3.5)
            a -= 0.08
    setheading(0)

    speed(1)
    penup()
    goto(-16, -150)
    pendown()
    pensize(3)
    left(35)
    forward(15)
    setheading(0)
    right(115)
    forward(34)

    setheading(180)
    penup()
    goto(-49, -250)
    pendown()
    pensize(3)
    right(35)
    forward(15)
    setheading(180)
    left(115)
    forward(34)
    turtle.penup()
    turtle.goto(130, 0)
    turtle.color('red')
    write = turtle.write('ღ💕爱你喔~💕ღ\n  ღ💕老婆~💕ღ', font=('华光胖头鱼_CNKI', 25, 'normal'))
    time.sleep(10)

number=[3,2,1]    #储存显示界面倒数数字1,2,3


import pygame
if __name__ == '__main__':
    file = r'C:\Users\bobo\Desktop\张宇 - 给你们.flac' # 背景音乐目录
    pygame.mixer.init()
    track = pygame.mixer.music.load(file)
    pygame.mixer.music.play()
    bgcolor(1, 0.6, 1)
    pencolor('red')
    penup()
    goto(-150, 50)
    pendown()
    write('加载背景音乐中...', font=('Arial Narrow', 20, 'italic'))
    penup()
    goto(-15, -50)
    circle(20, 5000)

    turtle.setup(900, 500)     #调画布的尺寸
    for i in number:
        draw_0(i)
        clear_screen()
    draw_1()
    clear_screen()
    draw_2()
    clear_screen()
    draw_3()
    clear_screen()
    draw_4()
    clear_screen()
    draw_5()
    turtle.done()

 程序部分运行效果如下:

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值