基于Python繪制520表白代碼
一、繪制成品

二、繪制代碼
實(shí)現(xiàn)本文效果的整體思路是:加載庫(kù)—選擇背景音樂—繪制心的外輪廓—填充心并寫告白信—繪制心動(dòng)線。
1.導(dǎo)入庫(kù)
# -*- coding: UTF-8 -*- ''' 代碼用途 :情人節(jié)表白 作者 :阿黎逸陽(yáng) 博客 : https://blog.csdn.net/qq_32532663/article/details/106176609 ''' import os import pygame import turtle as t
本文應(yīng)用到的庫(kù)較少,只應(yīng)用了os、pygame和turtle三個(gè)庫(kù)。
os庫(kù)可以設(shè)置文件讀取的位置。
pygame庫(kù)是為了繪制過程更有趣,在繪圖過程中添加了背景音樂,如果無需背景音樂,不用加載該庫(kù)。
turtle庫(kù)是繪圖庫(kù),相當(dāng)于給你一支畫筆,你可以在畫布上用數(shù)學(xué)邏輯控制的代碼完成繪圖。
2.選擇背景音樂
接著應(yīng)用pygame庫(kù)播放背景音樂,本文的音樂是《 瞬間的永恒》。
#播放音樂
print('播放音樂')
pygame.mixer.init()
pygame.mixer.music.load(r"F:\公眾號(hào)\520\趙海洋 - 《瞬間的永恒》夜色鋼琴曲.mp3")
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(1, 10)
這一部分的代碼和整體代碼是剝離的,可以選澤在最開始放上該代碼,也可以直接刪除。如果選擇播放音樂,需要在代碼music.load函數(shù)中把你想放音樂的地址填進(jìn)去。
3.繪制心的外輪廓
然后繪制心的外輪廓,代碼如下:
t.title('阿黎逸陽(yáng)的代碼公眾號(hào)')
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)
關(guān)鍵代碼詳解:
t.penup():抬起畫筆,一般用于另起一個(gè)地方繪圖使用。
t.goto(x,y):畫筆去到某個(gè)位置,參數(shù)為(x,y),對(duì)應(yīng)去到的橫坐標(biāo)和縱坐標(biāo)。
t.pendown():放下畫筆,一般和penup組合使用。
t.color(color):設(shè)置畫筆的顏色。
t.setheading(θ):設(shè)置海龜頭與橫坐標(biāo)偏離的度數(shù)。
t.circle(radius,extent,steps):radius指半徑,若為正,半徑在小烏龜左側(cè)radius遠(yuǎn)的地方,若為負(fù),半徑在小烏龜右側(cè)radius遠(yuǎn)的地方;extent指弧度;steps指階數(shù)。畫外輪廓的關(guān)鍵是:通過調(diào)節(jié)circle函數(shù)中的半徑和弧度來調(diào)節(jié)曲線的弧度,從而使得小蜜蜂的輪廓比較流暢。
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, '時(shí) 光 不 曾 走 遠(yuǎn)')
heart_fill(-140, -20)
heart_fill(-180, 20)
heart_fill(-210, 60)
heart_fill(-230, 100)
write_mes(x, y-30*3, 11, '幸 福 延 續(xù) 到 明 天')
heart_fill(-220, 145)
heart_fill(-170, 155)
heart_fill(-130, 130)
write_mes(x, y-30*4, 11, '永 遠(yuǎn) 不 說 再 見')
5.畫心動(dòng)線
最后是寫姓名并畫心動(dòng)線,代碼如下:
t.speed(15)
print('畫心動(dòng)線')
def heart_bit():
#畫心動(dòng)線
t.penup()
t.goto(-170, 40)
t.pendown()
t.pencolor('red')
t.setheading(0)
t.pensize(2)
t.forward(10)
#第一個(gè)小波浪
t.setheading(45)
t.circle(50, 10)
t.setheading(0)
t.circle(-3,90)
t.circle(50, 5)
#橫線
t.setheading(0)
t.forward(10)
#第一個(gè)下尖峰
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():
#寫兩個(gè)人的姓名(需替換成真實(shí)姓名)
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()
到此這篇關(guān)于基于Python繪制520表白代碼的文章就介紹到這了,更多相關(guān)Python表白內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
嘗試用最短的Python代碼來實(shí)現(xiàn)服務(wù)器和代理服務(wù)器
"人生苦短、我用Python",Python最大的特點(diǎn)便是代碼簡(jiǎn)潔,得益于Python自帶的wsgiref包和socket模塊,這里我們將嘗試用最短的Python代碼來實(shí)現(xiàn)服務(wù)器和代理服務(wù)器:2016-06-06
python 利用openpyxl讀取Excel表格中指定的行或列教程
這篇文章主要介紹了python 利用openpyxl讀取Excel表格中指定的行或列教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
django項(xiàng)目中新增app的2種實(shí)現(xiàn)方法
這篇文章主要介紹了django項(xiàng)目中新增app的2種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python人工智能tensorflow函數(shù)tf.get_variable使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.get_variable使用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
用 Django 開發(fā)一個(gè) Python Web API的方法步驟
這篇文章主要介紹了用 Django 開發(fā)一個(gè) Python Web API的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Pytorch中index_select() 函數(shù)的實(shí)現(xiàn)理解
這篇文章主要介紹了Pytorch中index_select() 函數(shù)的實(shí)現(xiàn)理解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

