以下是程序的代码,由turtle绘画:
import turtle as t
import time
t.bgcolor("#a1e5ff")
t.title("升旗")
t.setup(width=1.0, height=1.0)
# 设置三个画笔,t1画国旗,t2画歌词,t3画太阳
t1 = t.Turtle()
t2 = t.Turtle()
t3 = t.Turtle()
t1.hideturtle()
t2.hideturtle()
t3.hideturtle()
t1.pensize(1)
t1.speed(0)
t2.pensize(1)
t2.speed(0)
t3.pensize(1)
t3.speed(0)
# 一格长 100/3,宽 100/3
def flag_main(x, y, longth, width, scale):
t1.setheading(0)
t1.pencolor("#dd290f")
t1.penup()
t1.goto(x * scale, y * scale)
t1.pendown()
t1.begin_fill()
t1.fillcolor("#dd290f")
for i in range(2):
t1.fd(longth * scale)
t1.left(90)
t1.fd(width * scale)
t1.left(90)
t1.penup()
t1.end_fill()
t1.setheading(0)
# 大五角星中心坐标(-1000/3,210)
def flag_bigstar(x, y, length, scale):
t1.setheading(0)
t1.pencolor("#ffdf00")
t1.penup()
t1.goto(x * scale, y * scale)
t1.pendown()
t1.begin_fill()
t1.fillcolor("#ffdf00")
for i in range(4):
t1.fd(length * scale)
t1.right(144)
t1.penup()
t1.end_fill()
t1.setheading(0)
def flag_smallstar(x, y, length, an, scale):
t1.goto(-1000/3 * scale, 210 * scale)
t1.setheading(an)
t1.pencolor("#ffdf00")
t1.penup()
t1.goto(x * scale, y * scale)
t1.pendown()
t1.begin_fill()
t1.fillcolor("#ffdf00")
for i in range(4):
t1.fd(length * scale)
t1.right(144)
t1.penup()
t1.end_fill()
t1.setheading(0)
def draw_flag(x, y, scale):
flag_main(x, y, 1000, 2000/3, scale)
# 画大五角星,传入 scale 参数缩放
flag_bigstar(x + 600/3 * scale, y + 3300/3 * scale, 200 * scale, scale)
# 画小五角星
# 第一颗
flag_smallstar(x + 1400/3 * scale, y + 3500/3 * scale, 200/3 * scale, 47, scale)
# 第二颗
flag_smallstar(x + 1720/3 * scale, y + 3400/3 * scale, 200/3 * scale, -45, scale)
# 第三颗
flag_smallstar(x + 1670/3 * scale, y + 3000/3 * scale, 200/3 * scale, 0, scale)
# 第四颗
flag_smallstar(x + 1400/3 * scale, y + 2730/3 * scale, 200/3 * scale, 47, scale)
def song():#画歌曲歌词
rylics =["起来!","不愿做奴隶的人们!","把我们的血肉,\n筑成我们新的长城!","中华民族到了\n最危险的时候,","每个人被迫着\n发出最后的吼声。","起来!(X1)","起来!(X2)","起来!(X3)","我们万众一心,\n冒着敌人的炮火,","前进!","冒着敌人的炮火,","前进!(X1)","前进!(X2)","前进!进!(X3)"]
t2.penup()
t2.goto(-750,-100)
t2.pendown()
t2.pencolor("red")
for i in range(len(rylics)):
t2.write(rylics[i],font=("楷体", 50, "normal"))
time.sleep(2)
t2.clear()
t2.penup()
def stick():#画旗杆
t1.pendown()
t1.color("#b0b6d0")
t1.setheading(90)
t1.penup()
t1.setx(-190)
t1.pendown()
t1.sety(-t.window_height()/2)
t1.fd(t.window_height())
def flag_up():#升国旗
t1.pensize(1)
for i in range(-1400,200, 5):
t1.clear()
t.tracer(0)
t1.pensize(20)
stick()
t1.pensize(1)
draw_flag(-400,i, 0.5)
time.sleep(0.01)
t.update()
def sun():#画太阳
t3.penup()
t3.goto(-700,100)
t3.pendown()
t3.begin_fill()
t3.fillcolor("red")
t3.circle(200)
t3.end_fill()
t3.begin_fill()
t3.pencolor("#f5ab29")
t3.pensize(20)
t3.circle(202)
t3.pensize(1)
t3.end_fill()
t3.penup()
#主程序
t.tracer(0)
sun()
draw_flag(-400, -1350, 0.5)
t.tracer(1)
t2.penup()
t2.goto(-750,-100)
t2.pendown()
t2.pencolor("red")
t2.write("即将播放国歌...",font=("华文行楷", 45, "normal"))
t1.pensize(20)
stick()
t1.pensize(1)
flag_up()
t2.clear()
song()
t2.penup()
t2.goto(-750,-100)
t2.pendown()
t2.pencolor("red")
t2.write("升旗完毕!解散!",font=("华文行楷", 45, "normal"))
# 保持窗口不关闭
t.mainloop()
接下来是运行图片:
下面是演示视频:
python画升国旗带歌词 演示视频