# @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()
程序部分运行效果如下: