主頁 > 軟體設計 > 圣誕節來了,怎能還沒有圣誕樹呢 快來為心愛的她送上專屬的圣誕禮物叭~

圣誕節來了,怎能還沒有圣誕樹呢 快來為心愛的她送上專屬的圣誕禮物叭~

2021-12-16 08:57:38 軟體設計

在這里插入圖片描述

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好我叫是Dream呀,一個有趣的Python博主,小白一枚,多多關照😜😜😜
🏅🏅🏅CSDN Python領域新星創作者,大二在讀,歡迎大家找我合作學習
💕入門須知:這片樂園從不缺乏天才,努力才是你的最終入場券!🚀🚀🚀
💓最后,愿我們都能在看不到的地方閃閃發光,一起加油進步🍺🍺🍺
🍉🍉🍉“一萬次悲傷,依然會有Dream,我一直在最溫暖的地方等你”,唱的就是我!哈哈哈~🌈🌈🌈
🌟🌟🌟???

前言:本來是打算停更一段時間的,因為最近期末復習很忙,自己也有許多私事要處理,心挺亂挺煩的,最主要的原因還是感覺自己的文章能被大家關注喜歡,自己挺榮幸的,粉絲也是達到了1W+,所以說我想停下來一段時間,好好審視一下自己,以后應該出一些什么樣的文章來分享給大家,重新再規劃一下學習路線,停更的這一段時間里,有很多小伙伴陸陸續續給我發私信,說想看什么內容,讓我出一期,我都一一答應了,但最近真的很亂很煩,但我保證寒假我一定會出的!

Python打造專屬于你的圣誕樹+落葉+雪花+背景音樂+浪漫彈窗 五合一版圣誕樹

  • 一、背景故事
    • 圣誕節風波??????
  • 二、五合一版圣誕樹制作程序
    • 需要用到的模塊:
    • 1.基礎圣誕樹
    • 2.落葉效果
    • 3.雪花特效
    • 4.背景音樂
    • 5.浪漫彈窗
    • 6.署名制作
  • 三、原始碼分享
  • 四、🎄美好祝愿🎄

一、背景故事

圣誕節風波??????

馬上不就到圣誕節了嘛,我看到朋友圈里很多小伙伴再紛紛炫耀自己收到的專屬圣誕樹,也有小伙伴私信我,說還沒有自己的圣誕樹!!!
在這里插入圖片描述
在這里插入圖片描述
作為我的粉絲朋友們,我不允許大家還沒有專屬于自己的圣誕樹!我要讓大家收到最特別最美麗的圣誕樹,于是…冒著…期末掛科…的風險…我重拾了自己失傳已久的海龜畫圖海龜畫圖全解–值得你一看! (這篇文章寫了很久了,是一些海龜畫圖最基礎的操作,不太了解的小伙伴們可以拿這篇文章來快速入門海龜畫圖!)
終于…經過…昨天…一個晚上…的艱苦…奮斗,我覺得我又行了!
從最底層開始,我一步一步完善代碼設計出了:圣誕樹+落葉+雪花+背景音樂+浪漫彈窗 五合一版圣誕樹🎄🎄🎄! 話不多說,先看效果:
在這里插入圖片描述

在這里插入圖片描述
🌈🌈🌈哎嘿嘿,是不是非常的nice呀!看到這先別著急,為了我的期末成績著想,是不是得先給我來個一鍵三連呀!!!
在這里插入圖片描述

接下來讓我們慢慢來聊,請大家前排就坐,爆米花自取喲(點贊+收藏相當于一份爆米花😜😜😜)

二、五合一版圣誕樹制作程序

需要用到的模塊:

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

這是我們要用到的一些基礎庫,沒有安裝的小伙伴們可以安裝一下,要求編譯器是Python3的環境,基礎操作還不會的小伙伴看這里:??Python入門這些你必須要知道!
我用的是Pycharm,對Pycharm不懂的小伙伴look這個:全網首發,一篇文章帶你走進pycharm的世界

1.基礎圣誕樹

畫主體樹的部分看似有些麻煩,但只要你把其中的幾個回圈看明白了就行了,無非就是幾個函式重復控制畫筆移動!

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)

2.落葉效果

在這里我使用了random函式,通過判斷條件控制了兩種顏色,大家也可以加入更多的顏色進行繪制落葉:

 if random.randint(1, 2) == 1:
      t.color('tomato')
 else:
      t.color('wheat')

也可以使其變成不同的形狀,也沒必要全是圓形,時間問題我就沒改,大家感興趣可以再改一下,也可以使落葉在圣誕樹上,不用全在圣誕樹下:t.circle(4)

# 繪制落葉
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)

3.雪花特效

這里我做了很詳細的介紹,大家可以參考這個來具體看,還是很好看的:

# 繪制雪花
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()

4.背景音樂

這里使用Pygame模塊中的mixer來控制音樂的播放,需要匯入本地音樂路徑,然后就可以啦!這樣會使整個的繪制程序更加浪漫有趣!

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

5.浪漫彈窗

這里使用了tkinter模塊來進行小彈窗的繪制,最后是用for回圈來實作彈窗的重復性和隨機性,這也是我覺得最大的創新之處吧!驚喜重重,滿滿心意與浪漫,哈哈哈,

# 彈窗制作
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()

6.署名制作

最后我又簡單的加上了自己的署名,算是對自己產權的一種保護吧,雖然沒啥用,你們也肯定會給我去掉,但我不管,這就是一種儀式感嗷!

# 寫下署名
t.color("red")  # 填充顏色
t.up()  # 抬筆
t.goto(170,-200)
t.down()  # 落筆
t.write("Created:是Dream呀", font=("宋體", 18, "normal"))
t.ht()
# t.done()
t.hideturtle()

三、原始碼分享

原始碼來嘍:

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

四、🎄美好祝愿🎄

希望大家在圣誕節都可以和喜歡的人在一起,送上那棵專屬于她or他的圣誕樹🎄🎄🎄!天天開心,好好生活,我一直都在喲~💘💘💘(有任何問題的話,歡迎評論區或者私信我嗷,我都會看的!)

🌲🌲🌲 好啦,這就是今天要分享給大家的全部內容了,我們下期再見!
??????如果你喜歡的話,就不要吝惜你的一鍵三連了~
在這里插入圖片描述
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/382041.html

標籤:其他

上一篇:谷粒商城_03_前端基礎

下一篇:我與接下來的路

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more