zoukankan      html  css  js  c++  java
  • Pyhton表白代码——浪漫圣诞节

    圣诞节即将到了,所以这回通过turtle模块来编写一个表白的小程序

    开发时间:2019-12-15

    开发工具:Sublime

    开发模块:turtle

    这里用到了turtle库的相关知识,如果不熟悉可以看我之前的博客:

    turtle库相关知识点

    首先,我们需要来创建一个函数来承载所有初始化数据,包括画布的大小,画笔的尺寸、颜色、还有画笔的移动速度

    以演示图为例子,设置了一个800*600大小的画布,红色画笔宽为5,速度为10

    代码如下所示:

    def initdata():
        t.setup(800,600)
        t.pencolor('red')
        t.pensize(5)
        t.speed(10)

    设置好相关属性后,就可以开始作画了

    首先画笔位于正中央,若想移动画笔将会在画布上留下痕迹,也就是画上了线条,

    但是有些线条,画作本身并不需要,这就需要做到让画笔移动的同时,画布不留痕迹

    需要用到up()和down();两个函数,如直译一般作用为抬起画笔和放下画笔

    所以操作为,抬起画笔——移动到指定地方——放下画笔

    代码如下所示:

    ef move_pen(x,y):
        t.hideturtle()
        t.up()
        t.goto(x,y)
        t.down()
        t.showturtle()

    注意:hideturtle()和showturtle()为隐藏画笔和显示画笔。对画作本身毫无影响

    绘制演示图中,最难的部分在哪里?

    一定是爱心上半部分的两个半圆,所以为方便,我们单独讲这一部分提出来做一个绘制半圆的函数

    在turtle库中并没有绘制曲线的函数,最接近的也只有画圆了。

    不过我们可以通过割圆法来绘制,也就是将这一段圆弧视为一个边长很短的多边形

    所以我们通过for循环来绘制,通过不断偏转方向的小线段组成

    代码如下:

    def hart_arc():
        for i in range(200):
            t.right(1)
            t.forward(2)

    现在我们开始绘制图形draw()

    首先表白总要有表白者和被表白者吧,所以我们先创建name和sign来存储名字

    之后通过调用初始化函数来获取相关信息

    最后就可以操纵画笔开始绘制。

    先将画笔移动到(0,-180)的位置,也就是爱心的下部尖端,这就用到了刚刚创建的移动函数,

    之后控制画笔调整方向,移动224的距离绘制完成前面的爱心下部的右侧边

    然后绘制爱心上半部分,调用hart_arc()绘制了爱心上半部分左侧,

    然后调整方向,画笔向左偏转120度,再绘制另一个半圆

    最后画笔返回初始位置,画好了第一个爱心,将其填充为粉色。

    同理可画第二个爱心,到最后来一个“一箭双❤”就可以了

    绘制完成之后,我们就要输出刚刚记载的两个人名了

    这需要用到write()函数

    代码如下:

    def draw():
        name=input("请输入表白姓名:")
        sign=input("请输入你的大名:")
        initdata()
        move_pen(0,-180)
        t.left(140) 
        t.fillcolor("pink")
        t.begin_fill()  
        t.forward(224)  
        hart_arc() 
        t.left(120) 
        hart_arc() 
        t.forward(224)
        t.end_fill()  
        move_pen(x=70, y=160) 
        t.left(185) 
        t.circle(-110,185)  
        t.forward(50)
        move_pen(-180,-180)
        t.left(180) 
        t.forward(600)  
        move_pen(0,50)
        t.hideturtle() 
        t.color('#CD5C5C', 'red')  
        t.write(name, font=('Arial', 20, 'bold'), align="center")
        t.color('red', 'pink')
        time.sleep(2)
        move_pen(220, -180)
        t.hideturtle()
        t.write(sign, font=('Arial', 20), align="center")

    这样表白的代码就制作完成了

     感谢大家支持,总体代码如下:

    import turtle as t
    import time
    
    def initdata():
        t.setup(800,600)
        t.pencolor('red')
        t.pensize(5)
        t.speed(10)
    
    def move_pen(x,y):
        t.hideturtle()
        t.up()
        t.goto(x,y)
        t.down()
        t.showturtle()
    
    def hart_arc():
        for i in range(200):
            t.right(1)
            t.forward(2)
    
    def draw():
        name=input("请输入表白姓名:")
        sign=input("请输入你的大名:")
        initdata()
        move_pen(0,-180)
        t.left(140) 
        t.fillcolor("pink")
        t.begin_fill()  
        t.forward(224)  
        hart_arc() 
        t.left(120) 
        hart_arc() 
        t.forward(224)
        t.end_fill()  
        move_pen(x=70, y=160) 
        t.left(185) 
        t.circle(-110,185)  
        t.forward(50)
        move_pen(-180,-180)
        t.left(180) 
        t.forward(600)  
        move_pen(0,50)
        t.hideturtle() 
        t.color('#CD5C5C', 'red')  
        t.write(name, font=('Arial', 20, 'bold'), align="center")
        t.color('red', 'pink')
        time.sleep(2)
        move_pen(220, -180)
        t.hideturtle()
        t.write(sign, font=('Arial', 20), align="center")
    def main():
        draw()
        time.sleep(5)
    if __name__ == '__main__':
        main()
  • 相关阅读:
    【k8s部署】6. 部署 worker 节点
    【k8s部署】5. 部署 master 节点
    【k8s部署】4. 部署 etcd 集群
    【k8s部署】3. 安装和配置 kubectl
    【k8s部署】2. 创建CA根证书和秘钥
    【k8s部署】1. 环境准备和初始化
    【踩坑】OpenStack4j使用过程中关于OSClientSession被更改的问题记录
    10. 配置Horizon — OpenStack Queens 三节点部署
    9. 配置网络(VXLAN_OpenvSwitch)— OpenStack Queens 三节点部署
    Mac安装svn(解决新系统Xcode不支持问题)
  • 原文地址:https://www.cnblogs.com/lyy135146/p/12043733.html
Copyright © 2011-2022 走看看