Python写中秋Rap

我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9xWDdyU0Jnb0VwMlFIOG9LMHFmMUpTYVJNN0hKR21XNkIxYmQ4aWM4VVppYk92SXduQldHd05VNjRGQTJMVXIwUWxRT2ExSEF1ZEVnbThhNUVsbHVOR0JBLzY0MA.png

中秋节马上就要到啦

各位小伙伴是不是

已经按捺不住激动的心情

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

(此条屏蔽领导)

在写这篇文章之前

我在网上

已经看到了许多关于

中秋节的各种段子和诗句

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

之类的字眼

我想:

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

3.jpeg

大概古代和现代的诗人

是最早的嘻哈歌手吧

而所谓的打油诗

就是freestyle吧

这里就教大家

作中秋flow一首:

明月几时有

今天喝啤酒

遥望月宫兔

怎么像条狗

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

1.gif

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

1).绘图步骤****

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

2.jpeg

  • 建立画布:定义一个初始化函数,设置图幅、背景色及绘图速度。
  • 月亮:定位起点,指定半径,绘制圆形并填充颜色。
  • 白云:设置线宽和颜色,绘制直线;圆弧部分稍微复杂一点,要随着角度变化不断改变线宽——前90°逐步增加线 宽、后90°逐步减小线宽,即可得到图中效果。
  • 山脉:依据形状绘制一个封闭的多边形,然后填充颜色。 
  • 文字:turtle模块中的wrtie()函数可直接在图中写入文字,支持自定义字体和字号。 

2).源码步骤

首先引入turtle 和 time 模块:

import turtle
import 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"))
    turtle.sleep(1)
    turtle.goto(300, -150)
    turtle.write("遥\n望\n月\n宫\n兔\n, align="center", font=("STXingkai", 50, "bold")) 
    turtle.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.right(30)
    turtle.forward(200)
    turtle.left(40)
    turtle.forward(300)
    turtle.right(300)
    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)
    tuntle.speed(8)#没蛋南笔速度分8
def main()"
    draw_init()
    draw_moon()
    draw_cloud()
    draw_mountain()
    draw_words()
    turtle.exitonclick()
    
if __name__ === '__main__'
    main()
复制代码