基于Python绘制520表白代码
作者:阿黎逸阳 发布时间:2021-06-10 08:14:44
一、绘制成品
二、绘制代码
实现本文效果的整体思路是:加载库—选择背景音乐—绘制心的外轮廓—填充心并写告白信—绘制心动线。
1.导入库
# -*- coding: UTF-8 -*-
'''
代码用途 :情人节表白
作者 :阿黎逸阳
博客 : https://blog.csdn.net/qq_32532663/article/details/106176609
'''
import os
import pygame
import turtle as t
本文应用到的库较少,只应用了os、pygame和turtle三个库。
os库可以设置文件读取的位置。
pygame库是为了绘制过程更有趣,在绘图过程中添加了背景音乐,如果无需背景音乐,不用加载该库。
turtle库是绘图库,相当于给你一支画笔,你可以在画布上用数学逻辑控制的代码完成绘图。
2.选择背景音乐
接着应用pygame库播放背景音乐,本文的音乐是《 瞬间的永恒》。
#播放音乐
print('播放音乐')
pygame.mixer.init()
pygame.mixer.music.load(r"F:\公众号\520\赵海洋 - 《瞬间的永恒》夜色钢琴曲.mp3")
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(1, 10)
这一部分的代码和整体代码是剥离的,可以选泽在最开始放上该代码,也可以直接删除。如果选择播放音乐,需要在代码music.load函数中把你想放音乐的地址填进去。
3.绘制心的外轮廓
然后绘制心的外轮廓,代码如下:
t.title('阿黎逸阳的代码公众号')
t.speed(10)
#t.screensize(1000, 800)
t.setup(startx=0, starty = 0, width=800, height = 600)
t.hideturtle()
print('画爱心')
#画爱心
def heart(x, y):
t.penup()
t.goto(x, y)
t.pendown()
t.color('pink')
t.setheading(50)
t.circle( -5, 180)
t.circle( -45, 12)
t.setheading(130)
t.circle( -45, 12)
t.circle( -5, 180)
heart(-30, 155)
heart(-220, 145)
heart(-210, 60)
heart(-100, 100)
heart(-20, 20)
heart(-70, 130)
heart(-140, -20)
heart(30, 100)
heart(-60, -20)
heart(10, 60)
heart(-100, -70)
heart(20, 145)
heart(-140, -20)
heart(-130, 130)
heart(-180, 20)
heart(-170, 155)
heart(-230, 100)
关键代码详解:
t.penup():抬起画笔,一般用于另起一个地方绘图使用。
t.goto(x,y):画笔去到某个位置,参数为(x,y),对应去到的横坐标和纵坐标。
t.pendown():放下画笔,一般和penup组合使用。
t.color(color):设置画笔的颜色。
t.setheading(θ):设置海 * 与横坐标偏离的度数。
t.circle(radius,extent,steps):radius指半径,若为正,半径在小乌龟左侧radius远的地方,若为负,半径在小乌龟右侧radius远的地方;extent指弧度;steps指阶数。画外轮廓的关键是:通过调节circle函数中的半径和弧度来调节曲线的弧度,从而使得小蜜蜂的轮廓比较流畅。 
4.填充心并写告白信
接下来边填充心,边写告白信,代码如下:
def write_mes(x, y, size, ss):
t.hideturtle()
t.penup()
t.goto(x, y)
t.pendown()
t.pencolor('black')
t.write(ss, font=('Times New Roman', size, 'normal'))
#画红心
print('画红心')
def heart_fill(x, y):
t.penup()
t.goto(x, y)
t.pendown()
t.color('red', 'red')
t.begin_fill()
t.setheading(50)
t.circle( -5, 180)
t.circle( -45, 12)
t.setheading(130)
t.circle( -45, 12)
t.circle( -5, 180)
t.end_fill()
x = 90
y = 110
#右边爱心
write_mes(x, y, 11, '喜 欢 你 的 每 一 天')
heart_fill(-100, 100)
heart_fill(-70, 130)
heart_fill(-30, 155)
heart_fill(20, 145)
heart_fill(30, 100)
write_mes(x, y-30, 11, '爱 意 不 曾 退 减')
heart_fill(10, 60)
heart_fill(-20, 20)
heart_fill(-60, -20)
heart_fill(-100, -70)
#左边爱心
write_mes(x, y-30*2, 11, '时 光 不 曾 走 远')
heart_fill(-140, -20)
heart_fill(-180, 20)
heart_fill(-210, 60)
heart_fill(-230, 100)
write_mes(x, y-30*3, 11, '幸 福 延 续 到 明 天')
heart_fill(-220, 145)
heart_fill(-170, 155)
heart_fill(-130, 130)
write_mes(x, y-30*4, 11, '永 远 不 说 再 见')
5.画心动线
最后是写姓名并画心动线,代码如下:
t.speed(15)
print('画心动线')
def heart_bit():
#画心动线
t.penup()
t.goto(-170, 40)
t.pendown()
t.pencolor('red')
t.setheading(0)
t.pensize(2)
t.forward(10)
#第一个小波浪
t.setheading(45)
t.circle(50, 10)
t.setheading(0)
t.circle(-3,90)
t.circle(50, 5)
#横线
t.setheading(0)
t.forward(10)
#第一个下尖峰
t.setheading(-80)
t.forward(7)
t.setheading(70)
t.forward(25)
t.setheading(-85)
t.forward(29)
t.setheading(70)
t.forward(13)
t.setheading(0)
t.forward(15)
#画心
t.setheading(150)
t.circle(-20, 40)
t.circle(-10, 170)
t.setheading(70)
t.circle(-10, 170)
t.circle(-20, 40)
t.setheading(0)
t.forward(15)
#2
t.setheading(-80)
t.forward(7)
t.setheading(70)
t.forward(25)
t.setheading(-85)
t.forward(29)
t.setheading(70)
t.forward(13)
t.setheading(0)
t.forward(15)
t.setheading(0)
t.forward(10)
t.setheading(45)
t.circle(50, 10)
t.setheading(0)
t.circle(-3,90)
t.circle(50, 5)
t.setheading(0)
t.forward(10)
def write_name(x, y, size, ss):
t.hideturtle()
t.penup()
t.goto(x, y)
t.pendown()
t.pencolor('black')
t.write(ss, font=('Times New Roman', size, 'normal'))
def undo_back():
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
t.undo()
def undo_back2():
t.undo()
t.undo()
def name_heart_bit():
#写两个人的姓名(需替换成真实姓名)
write_name(-180, 70, 11, '韩商言')
write_name(-180, 70, 11, '韩商言')
write_name(-180, 70, 11, '韩商言')
heart_bit()
write_name(-60, 70, 11, '佟年')
write_name(-60, 70, 11, '佟年')
write_name(-60, 70, 11, '佟年')
write_name(-60, 70, 11, '佟年')
write_name(-60, 70, 11, '佟年')
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back()
undo_back2()
while 1:
name_heart_bit()
来源:https://blog.csdn.net/qq_32532663/article/details/124786507
猜你喜欢
- iUI、jQTouch、WPTouch、PhoneGap、XUI、iWebkit、Rhodes、gwt-mobile…当我们已经开始惊叹 w
- 什么是粘包问题最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的T
- MooTools 1.2介绍原文地址:30 Days of Mootools 1.2 Tutorials - Day 1 - Intro t
- 1. 用Dreamweaver 4.0轻松设计会自动弹性调整的网页 首先需要保证的是你的页面内容采用了表格的格式,然后打开你要编辑的页面,按
- 在网页中放iframe,如果frameborder=0;就没有边框显示了;但动态创建时,在IE7中就不行了,从网上找到解决的办法,写出来记录
- 本文实例讲述了Python连接SQLServer2000的方法。分享给大家供大家参考,具体如下:http://pymssql.sourcef
- 以去掉去掉<!--和-->为例进行说明:def clearContentWithSpecialCharacter(content
- 在数据库应用的设计中,我们往往会需要获取某些表的记录总数,用于判断表的记录总数是否过大,是否需要备份数据等。我们通常的做法是:select
- 以XML格式查看查询结果通过使用传统—xml 选项调用MySQL命令行客户程序,你可以以XML格式(而不是传统的列表形式
- 有一天我突发奇想,要是我每到一个网站,那里都能立刻调出我需要看的信息,那岂非美妙得很。接下来我想更深入地考虑这个问题,坐到椅子上拿一支铅笔,
- 130 :文件格式不正确。(还不是很清楚错误的状况) 145 :文件无法打开。 1005:创建表
- 简介观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。适用场景类似触发钩子事件,可
- 一、介绍这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。虽然这
- Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个逻辑运算符意义and双值运算符,如果左右两个条件都为真,则得到的值就为
- 本文实例讲述了Python实现矩阵加法和乘法的方法。分享给大家供大家参考,具体如下:本来以为python的矩阵用list表示出来应该很简单可
- 一、打开/关闭文件1、对文件操作时首先要打开文件,打开文件用 fopen()函数,语法是:fopen(filename,mode,inclu
- 首先,你需要去有道翻译API官网去申请key:http://fanyi.youdao.com/openapi?path=data-mode得
- 本文全部操作均在windows环境下安装 PythonPython是一种跨平台的计算机程序设计语言,它可以运行在Windows、Mac和各种
- XML 的使用越来越广泛,但是很多 XML 的结构并不好。即便结构良好,也常常设计得很糟,使得处理和维护非常困难。而大部分用于 XML 的基
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 19 - TooltipsMootools 1.2