python画圆形螺旋线_用Python写一首中秋Rap

中秋节马上就要到啦

各位小伙伴是不是

已经按捺不住激动的心情

心情早已飞到家里/旅游目的地

(此条屏蔽领导)

在写这篇文章之前

小编在网上

已经看到了许多关于

中秋节的各种段子和诗句

看到一些什么“中秋”、“酒”

之类的字眼

小编想:

这不是“单押”“双押”么

b3ab6f1092c9667c5f33cc60cef4eb78.png

大概古代和现代的诗人

是最早的嘻哈歌手吧

而所谓的打油诗

就是freestyle吧

这里就教大家

作中秋flow一首:

明月几时有

今天喝啤酒

遥望月宫兔

怎么像条狗

然鹅中秋flow需要有个背景,这里为了符合中秋节阖家欢乐的范围,我们选择了浓浓的中老年表情包风:

6d49b69bcfc120fcb888440cada0725f.gif

Python中有一个叫做turtle的内置模块,俗称海龟绘图,它基于tkinter模块打造,具备一些简单的绘图功能。虽说turtle很难绘制出非常复杂的效果,不过很适合用来画简(biao)笔(qing)画(bao)。

1).绘图步骤

建立画布并设置背景色,然后依次绘制圆月、白云、山脉和文字。关于turtle的使用非常简单,有疑问可以参考官方文档( https://docs.python.org/3/library/turtle.html),为了便于理解,这里列出常用的几种方法:

9d379f73bb452b4466ca8fa983efc0ce.png

  • 建立画布:定义一个初始化函数,设置图幅、背景色及绘图速度。

  • 月亮:定位起点,指定半径,绘制圆形并填充颜色。

  • 白云:设置线宽和颜色,绘制直线;圆弧部分稍微复杂一点,要随着角度变化不断改变线宽——前90°逐步增加线 宽、后90°逐步减小线宽,即可得到图中效果。

  • 山脉:依据形状绘制一个封闭的多边形,然后填充颜色。 

  • 文字:turtle模块中的wrtie()函数可直接在图中写入文字,支持自定义字体和字号。 

2).源码步骤

首先引入turtle 和 time 模块:

import turtleimport time

定义一个背景颜色:

BC = 'DodgerBlue4'

之后开始画月亮,就是一个圆然后填充为黄色:

def draw_moon():    turtle.pencolor(BC)    turtle.fillcolor('Gold')    turtle.penup()    turtle.goto(-150, 0)    turtle.pendown()    turtle.begin_fill()    turtle.circle(110)    turtle.end_fill()

将我们的“中秋flow”以文字的形式绘制上去:

def draw_words():    turtle.penup()    turtle.pencolor('Yellow')    turtle.goto(400, -150)    turtle.write("明\n月\n几\n时\n有\n", align="center", font=("STXingkai", 50, "bold"))    time.sleep(1)    turtle.goto(300, -150)    turtle.write("今\n天\n喝\n啤\n酒\n", align="center", font=("STXingkai", 50, "bold"))    time.sleep(1)    turtle.goto(200, -150)    turtle.write("遥\n望\n月\n宫\n兔\n", align="center", font=("STXingkai", 50, "bold"))    time.sleep(1)    turtle.goto(100, -150)    turtle.write("怎\n么\n像\n条\n狗\n", align="center", font=("STXingkai", 50, "bold"))

利用几条折线画出山脉:

def draw_mountain():    turtle.fillcolor('grey21')    turtle.pencolor('grey31')    turtle.pensize(4)    turtle.penup()    turtle.goto(-500, -250)    turtle.begin_fill()    turtle.pendown()    turtle.left(15)    turtle.forward(400)    turtle.right(30)    turtle.forward(200)    turtle.left(40)    turtle.forward(300)    turtle.right(50)    turtle.forward(300)    turtle.goto(500, -300)    turtle.goto(-500, -300)    turtle.end_fill()

之后是云彩的运行轨迹:

def draw_cloud():    step = 1.5  # 画弧时的步长    angle = 3  # 每次改变的角度    disize = 0.6  # 每次增加或减少的线宽    psize = 5  # 初始线宽    turtle.pencolor('WhiteSmoke')    turtle.pencolor('Gainsboro')    turtle.pensize(psize)    turtle.penup()    turtle.goto(-500, 200)    turtle.pendown()    turtle.forward(250)    for i in range(30):        psize += disize        turtle.pensize(psize)        turtle.right(angle)        turtle.forward(step)    for i in range(30):        psize -= disize        turtle.pensize(psize)        turtle.right(angle)        turtle.forward(step)    turtle.forward(100)    for i in range(30):        psize += disize        turtle.pensize(psize)        turtle.left(angle)        turtle.forward(step)    for i in range(30):        psize -= disize        turtle.pensize(psize)        turtle.left(angle)        turtle.forward(step)    turtle.forward(200)

最后写main方法,整合所有的画笔,完整的中秋freestyle就完成啦。

def draw_init():    turtle.hideturtle()    turtle.setup(1000, 600)    turtle.bgcolor(BC)    turtle.speed(8)  # 设置画笔速度为8def main():    draw_init()    draw_moon()    draw_cloud()    draw_mountain()    draw_words()    turtle.exitonclick()  # 点击才关闭画画窗口if __name__ == '__main__':    main()

最后祝大家中秋愉快,阖家欢乐~

417d3d3f98437acadc61cd1e9e2944c2.png

关注我们吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值