伙计们,快到520咯,身为程序猿的你,准备好给自己心动的女神表白嘛!除了必备的鲜花、礼物,不妨也试试用python编程画一只丘比特之箭给独一无二的女友吧!!!
首先定义好以下函数来进行坐标轴的定义,用于绘制爱心的大圆的函数定义, 用于绘制爱心的小圆的函数定义,用于定义线的速度及粗细的函数定义。
def go_to(self, x, y): #定义坐标轴
turtle.up()
turtle.goto(x, y)
turtle.down()
def big_circle(self, size): # 定义函数用于绘制爱心的大圆
turtle.speed(1)
for i in range(180):
turtle.forward(size)
turtle.right(0.3)
def small_circle(self, size): # 定义函数用于绘制爱心的小圆
turtle.speed(1)
for i in range(240):
turtle.forward(size)
turtle.right(0.786)
def line(self, size): #定义函数用于定义线的速度及粗细
turtle.speed(1000)
turtle.forward(51 * size)
用函数分别定义好两颗爱心的坐标、穿过两颗爱心的直线方法、丘比特之箭箭头的方法。
def heart(self, x, y, size):
self.go_to(x, y)
turtle.left(150)
turtle.begin_fill()
self.line(size)
self.big_circle(size)
self.small_circle(size)
turtle.left(120)
self.small_circle(size)
self.big_circle(size)
self.line(size)
turtle.end_fill()
def arrow(self):
turtle.pensize(10)
turtle.setheading(0)
self.go_to(-400, 0)
turtle.left(15)
turtle.forward(150)
self.go_to(339, 178)
turtle.forward(150)
def arrow_head(self):
turtle.pensize(1)
turtle.speed(0)
turtle.color('pink', 'pink')
turtle.begin_fill()
turtle.left(120)
turtle.forward(20)
turtle.right(150)
turtle.forward(35)
turtle.right(120)
turtle.forward(35)
turtle.right(150)
turtle.forward(20)
turtle.end_fill()
集合函数到main()进行输出:
def main():
turtle.pensize(2)
turtle.color('pink', 'pink')
my_heart = MyLove()
my_heart.heart(200, 0, 1) # 画出第一颗心,前面两个参数控制心的位置,函数最后一个参数可控制心的大小
turtle.setheading(0) # 使画笔的方向朝向x轴正方向
my_heart.heart(-80, -100, 1.5) # 画出第二颗心
my_heart.arrow() # 画出穿过两颗心的直线
my_heart.arrow_head() # 画出箭的箭头
my_heart.go_to(320, -280)
turtle.write("@Darren洋", move=True, align="right", font=("黑体", 28, "normal"))
turtle.done()
if __name__ == '__main__':
main()
完整代码如下:
import turtle
class MyLove(object):
def go_to(self, x, y):
turtle.up()
turtle.goto(x, y)
turtle.down()
def big_circle(self, size):
turtle.speed(1)
for i in range(180):
turtle.forward(size)
turtle.right(0.3)
def small_circle(self, size):
turtle.speed(1)
for i in range(240):
turtle.forward(size)
turtle.right(0.786)
def line(self, size):
turtle.speed(1000)
turtle.forward(51 * size)
def heart(self, x, y, size):
self.go_to(x, y)
turtle.left(150)
turtle.begin_fill()
self.line(size)
self.big_circle(size)
self.small_circle(size)
turtle.left(120)
self.small_circle(size)
self.big_circle(size)
self.line(size)
turtle.end_fill()
def arrow(self):
turtle.pensize(10)
turtle.setheading(0)
self.go_to(-400, 0)
turtle.left(15)
turtle.forward(150)
self.go_to(339, 178)
turtle.forward(150)
def arrow_head(self):
turtle.pensize(1)
turtle.speed(0)
turtle.color('pink', 'pink')
turtle.begin_fill()
turtle.left(120)
turtle.forward(20)
turtle.right(150)
turtle.forward(35)
turtle.right(120)
turtle.forward(35)
turtle.right(150)
turtle.forward(20)
turtle.end_fill()
def main():
turtle.pensize(2)
turtle.color('pink', 'pink')
my_heart = MyLove()
my_heart.heart(200, 0, 1)
turtle.setheading(0)
my_heart.heart(-80, -100, 1.5)
my_heart.arrow()
my_heart.arrow_head()
my_heart.go_to(320, -280)
turtle.write("@Darren洋", move=True, align="right", font=("黑体", 28, "normal"))
turtle.done()
if __name__ == '__main__':
main()
效果图如下: