基于Python繪制520表白代碼
一、繪制成品
二、繪制代碼
實(shí)現(xiàn)本文效果的整體思路是:加載庫—選擇背景音樂—繪制心的外輪廓—填充心并寫告白信—繪制心動(dòng)線。
1.導(dǎo)入庫
# -*- coding: UTF-8 -*- ''' 代碼用途 :情人節(jié)表白 作者 :阿黎逸陽 博客 : https://blog.csdn.net/qq_32532663/article/details/106176609 ''' import os import pygame import turtle as t
本文應(yīng)用到的庫較少,只應(yīng)用了os、pygame和turtle三個(gè)庫。
os庫可以設(shè)置文件讀取的位置。
pygame庫是為了繪制過程更有趣,在繪圖過程中添加了背景音樂,如果無需背景音樂,不用加載該庫。
turtle庫是繪圖庫,相當(dāng)于給你一支畫筆,你可以在畫布上用數(shù)學(xué)邏輯控制的代碼完成繪圖。
2.選擇背景音樂
接著應(yīng)用pygame庫播放背景音樂,本文的音樂是《 瞬間的永恒》。
#播放音樂 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('阿黎逸陽的代碼公眾號(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中的array數(shù)組模塊相關(guān)使用
數(shù)組并不是Python中內(nèi)置的標(biāo)配數(shù)據(jù)結(jié)構(gòu),不過擁有array模塊我們也可以在Python中使用數(shù)組結(jié)構(gòu),下面我們就來詳解詳解Python中的array數(shù)組模塊相關(guān)使用2016-07-07python3.7中安裝paddleocr及paddlepaddle包的多種方法
這篇文章主要介紹了python3.7中安裝paddleocr及paddlepaddle包,本文通過多種方法給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11drf-router和authenticate認(rèn)證源碼分析
在 Rest Framework 中提供了兩個(gè) router , 可以幫助我們快速的實(shí)現(xiàn)路由的自動(dòng)生成,本文通過實(shí)例代碼給大家介紹drf-router和authenticate認(rèn)證源碼分析,感興趣的朋友跟隨小編一起看看吧2021-07-07win10下tensorflow和matplotlib安裝教程
這篇文章主要為大家詳細(xì)介紹了win10下tensorflow和matplotlib安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09Python實(shí)現(xiàn)樹莓派攝像頭持續(xù)錄像并傳送到主機(jī)的步驟
這篇文章主要介紹了Python實(shí)現(xiàn)樹莓派攝像頭持續(xù)錄像并傳送到主機(jī)的步驟,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11Python學(xué)習(xí)之異常中的finally使用詳解
這篇文章主要為大家介紹一下Python異常語法中的另一個(gè)成員—finally,通過學(xué)習(xí)finally,可以幫助我們更好的處理異常,快來跟隨小編一起學(xué)習(xí)一下吧2022-03-03Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
這篇文章主要介紹了Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點(diǎn)圖實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12Python pygame實(shí)現(xiàn)中國象棋單機(jī)版源碼
今天給大家?guī)淼氖顷P(guān)于Python實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著用Python pygame實(shí)現(xiàn)中國象棋單機(jī)版展開,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06