Pyhton表白代码——浪漫圣诞节
圣诞节即将到了,所以这回通过turtle模块来编写一个表白的小程序
开发时间:2019-12-15
开发工具:Sublime
开发模块: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()
Pyhton表白代码——浪漫圣诞节的更多相关文章
- 零基础入门C/C++实现你的浪漫表白:浪漫流星雨表白程序
想要讨女朋友欢心也巩固自己所学的知识,各位小伙伴有自己的想法了吗?准备好想要怎样实施了吗?有什么美好的计划了吗?如果没有的话那么别慌,我知道,在座的各位肯定都是有自己的心仪的姑娘,那么今天就教大家一招 ...
- 520 简单表白代码(JS)
这两天不知道咋了,迷迷糊糊的,突然知道今天是520的我,急急忙忙赶出个程序(新手,代码有点乱),发出来大家一起研究下(参考百度的). <!DOCTYPE html> <html> ...
- 【Python】表白代码
# -*- coding:utf-8 -*- import turtle import time # 画爱心的顶部 def LittleHeart(): for i in range(200): tu ...
- Pyhton 一行代码求Fibonacci第N项
递归定义很简单,效率当然很低下,且极易超出栈空间大小. 这样做纯粹是为了体现python的语言表现力而已, 并没有任何实际意义. def fib(x): return fib(x-1) + fib(x ...
- 表白 代码 韩梦飞沙-画心.html
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 韩梦飞沙-画心.html <!DOCTYPE html> <html& ...
- python表白代码1.0桃心输出
python爱心表达函数初级版本:def my_heart(a,b=2): print("\n".join(["".join([(a[(x-y) % len(a ...
- c语言表白程序代码
双十一要到了,好激动啊!!! 是时候准备出手了! 花了一天的时间写的表白代码. 表示自己弱弱的..... 看了网上好多都是js写的,感觉碉堡了!js用的不熟,前端不好,java,Python写起来 ...
- Web前端资源汇总
本文地址:http://www.cnblogs.com/jihua/p/webfront.html 网页特效库 2017新年快乐特效 CSS3+jQuery实现时钟插件 Html5入门实例" ...
- 8款给力HTML5/CSS3应用插件 可爱的HTML5笑脸
1.HTML5/CSS3实现笑脸动画 非常可爱 今天我们要分享一款基于纯CSS3实现的笑脸动画,我们只要在面部滑动鼠标,即可让人物的眼睛嘴巴动起来,实现微笑的效果,还挺可爱的. 在线演示 源码下载 2 ...
随机推荐
- spring security 简单入门
spring security 简单入门示例 一.概述 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架 . 其中最主要的安全操作有两 ...
- 关于Jvm的见解(一)
Jvm组成结构 硬件体系(如Intel体系.spac等)——>操作系统(如Windows.Linux等)——>Java Virtual Machine 所以虚拟机与硬件系统并没有直接的交 ...
- HashMap深入分析及使用要点
本文内容来自深入理解HashMap.从数据结构谈HashMap.HashMap深度分析 先说使用要点. 1.不要在并发场景中使用HashMap HashMap是线程不安全的,如果被多个线程共享的操作, ...
- Windows下搭建远程Linux主机的图形化本地开发环境
在实际开发中,项目的类生产.生产环境一般都是选择Linux为服务器进行部署. 相应的,我们的开发最好也在Linux环境下进行,否则容易引发其他的问题,比如不同环境下功能不一致.库依赖差异等. 但是Li ...
- PHP 发送get请求
PHP 发送get请求 file_get_contents 方法: $s = file_get_contents("http://apis.map.qq.com/ws/distance/v1 ...
- 7. SOFAJRaft源码分析—如何实现一个轻量级的对象池?
前言 我在看SOFAJRaft的源码的时候看到了使用了对象池的技术,看了一下感觉要吃透的话还是要新开一篇文章来讲,内容也比较充实,大家也可以学到之后运用到实际的项目中去. 这里我使用Recyclabl ...
- error: Unexpected console statement (no-console)
使用console.log 报错??这个错误是Vuejs - 使用ESLint检查代码而产生的 解决办法: 1.不处理,虽然有恼人的提示,但是实际上能使用console.log的 2.关掉ESLint ...
- vue项目中使用百度统计
统计有多少人访问了自己的网站(wap端pc web端都适用),或者更细的统计网站每个页面的访问量,可以使用百度统计 百度统计传送门 按提示注册登录即可 登录后-->管理-->新增网站,配置 ...
- 使用boost data_time模块来获取毫秒级时间并转换为string字符串
本文首发于个人博客https://kezunlin.me/post/107cbcbb/,欢迎阅读! using boost.date_time to get time in millisecond m ...
- 快速搭建 SpringCloud 微服务开发环境的脚手架
本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...