首頁 > 軟體

基於Python繪製520表白程式碼

2022-05-16 13:00:03

一、繪製成品

二、繪製程式碼

實現本文效果的整體思路是:載入庫—選擇背景音樂—繪製心的外輪廓—填充心並寫告白信—繪製心動線。

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()

到此這篇關於基於Python繪製520表白程式碼的文章就介紹到這了,更多相關Python表白內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com