1. 程式人生 > 其它 >2021-12-17 用Python程式碼繪製帶音樂的聖誕樹

2021-12-17 用Python程式碼繪製帶音樂的聖誕樹

注,轉自CSDN:

https://blog.csdn.net/weixin_51390582/article/details/121959033?utm_source=app&app_version=4.20.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

原始碼:

#匯入需要用到的包,沒有的話需要先安裝

import turtle as t
import random
import pygame
import threading
import time
import tkinter as tk

file=r'薛之謙 - 遲遲.mp3'		# 音樂的路徑
pygame.mixer.init()						# 初始化
track = pygame.mixer.music.load(file)	# 載入音樂檔案
pygame.mixer.music.play()				# 開始播放音樂

t.screensize(bg='black')  # 定義背景顏色,可以自己換顏色

def loving_heart(r):
    l = 2 * r
    t.left(45)
    t.forward(l)
    t.circle(r, 180)
    t.right(90)
    t.circle(r, 180)
    t.forward(l)


# 樹函式(遞迴)
def tree(d, s):
    if d <= 0:
        return
    t.forward(s)
    tree(d - 1, s * .8)
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    tree(d - 3, s * .5)
    t.right(120)
    t.backward(s)  # 回退函式


# 畫愛心部分
t.penup()
t.goto(0, 200)  # 設定起點位置
t.pendown()
t.pencolor('red')  # 設定畫筆顏色
t.color('red')
t.begin_fill()  # 對圖形進行填充
loving_heart(20)  # 執行畫愛心函式
t.end_fill()

# 畫樹部分
n = 100
t.speed(0)
# t.Turtle().screen.delay(0)
t.right(225)
t.color("dark green")
t.backward(n * 4.8)
tree(15, n)
t.backward(n / 5)

# 繪製落葉
for i in range(200):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    t.speed(0)
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    if random.randint(1, 2) == 1:
        t.color('tomato')
    else:
        t.color('wheat')
    t.circle(4)
    t.up()
    t.backward(a)
    t.right(90)
    t.backward(b)
# 繪製雪花
def drawsnow():  # 定義畫雪花的方法
    t.speed(0)
    t.ht()  # 隱藏筆頭,ht=hideturtle
    t.pensize(2)  # 定義筆頭大小
    for i in range(200):  # 畫多少雪花
        t.pencolor("white")  # 定義畫筆顏色為白色,其實就是雪花為白色
        t.pu()  # 提筆,pu=penup
        t.setx(random.randint(-350, 350))  # 定義x座標,隨機從-350到350之間選擇
        t.sety(random.randint(-100, 350))  # 定義y座標,注意雪花一般在地上不會落下,所以不會從太小的縱座軸開始
        t.pd()  # 落筆,pd=pendown
        dens = 6  # 雪花瓣數設為6
        snowsize = random.randint(1, 10)  # 定義雪花大小
        for j in range(dens):  # 就是6,那就是畫5次,也就是一個雪花五角星
            # t.forward(int(snowsize))  #int()取整數
            t.fd(int(snowsize))
            t.backward(int(snowsize))
            # t.bd(int(snowsize))  #注意沒有bd=backward,但有fd=forward,小bug
            t.right(int(360 / dens))  # 轉動角度
drawsnow()
# 寫下署名
t.color("red")  # 填充顏色
t.up()  # 抬筆
t.goto(170,-200)
t.down()  # 落筆
t.write("Created:是Dream呀", font=("宋體", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()

time.sleep(2)

# 彈窗製作
def dow():
    window = tk.Tk()
    width = window.winfo_screenwidth()
    height = window.winfo_screenheight()
    a = random.randrange(0, width)
    b = random.randrange(0, height)
    window.title('聖誕節快樂')
    window.geometry("200x50" + "+" + str(a) + "+" + str(b))
    tk.Label(window,
             text='聖誕節快樂!',  # 標籤的文字
             bg='pink',  # 背景顏色
             font=('..', 17),  # 字型和字型大小
             width=18, height=2  # 標籤長寬
             ).pack()  # 固定視窗位置
    window.mainloop()


threads = []
for i in range(100):  # 需要的彈框數量
    t = threading.Thread(target=dow)
    threads.append(t)
    time.sleep(0.01)
    threads[i].start()

  

本文來自部落格園,作者:{admin-xiaoli},轉載請註明原文連結:{https://www.cnblogs.com/crackerroot}