import turtle |
import time |
|
|
# 清屏函数 |
def clear_all(): |
turtle.penup() |
turtle.goto( 0 , 0 ) |
turtle.color( 'white' ) |
turtle.pensize( 800 ) |
turtle.pendown() |
turtle.setheading( 0 ) |
turtle.fd( 300 ) |
turtle.bk( 600 ) |
|
|
# 重定位海龟的位置 |
def go_to(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_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 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 hart_arc(): |
for i in range ( 200 ): |
turtle.right( 1 ) |
turtle.forward( 2 ) |
|
# 画箭 |
def draw_arrow(size): |
angle = 30 |
turtle.color( 'black' ) |
draw_feather(size) |
turtle.pensize( 4 ) |
turtle.setheading(angle) |
turtle.pendown() |
turtle.fd(size * 2 ) |
|
|
# 一箭穿心 |
# 箭的头没有画出来,而是用海龟来代替 |
def arrow_heart(x, y, size): |
go_to(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 ) |
draw_arrow(size) |
|
|
# 画出发射爱心的小人 |
def draw_people(x, y): |
turtle.penup() |
turtle.goto(x, y) |
turtle.pendown() |
turtle.pensize( 2 ) |
turtle.color( 'black' ) |
turtle.setheading( 0 ) |
turtle.circle( 60 , 360 ) |
turtle.penup() |
turtle.setheading( 90 ) |
turtle.fd( 75 ) |
turtle.setheading( 180 ) |
turtle.fd( 20 ) |
turtle.pensize( 4 ) |
turtle.pendown() |
turtle.circle( 2 , 360 ) |
turtle.setheading( 0 ) |
turtle.penup() |
turtle.fd( 40 ) |
turtle.pensize( 4 ) |
turtle.pendown() |
turtle.circle( - 2 , 360 ) |
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 page0(): |
turtle.penup() |
turtle.goto( - 350 , 0 ) |
turtle.color( 'black' ) |
turtle.write( '专属于我们的情人节' , font = ( '宋体' , 60 , 'normal' )) |
time.sleep( 3 ) |
|
|
# 第二个画面,显示发射爱心的小人 |
def page1(): |
turtle.speed( 10 ) |
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( 250 , - 100 ) |
draw_heart( 45 ) |
turtle.hideturtle() |
time.sleep( 3 ) |
|
|
# 最后一个画面,一箭穿心 |
def page2(): |
turtle.speed( 1 ) |
turtle.penup() |
turtle.goto( - 200 , - 200 ) |
turtle.color( 'blue' ) |
turtle.pendown() |
turtle.write( '大笨蛋 小笨蛋' , font = ( 'wisdom' , 50 , 'normal' )) |
turtle.penup() |
turtle.goto( 0 , - 190 ) |
draw_heart( 10 ) |
arrow_heart( 20 , - 60 , 51 ) |
turtle.showturtle() |
|
|
def main(): |
turtle.setup( 900 , 500 ) |
page0() |
clear_all() |
page1() |
clear_all() |
page2() |
turtle.done() |
|
|
main() |