Python實現(xiàn)新年愿望代碼雨效果
1、引言
小絲:魚哥,2023年了, 你有啥愿望啊?
小魚:這, 我可以選擇不告訴你嗎?
小絲:可以選擇不告訴我,但是,你自己憋著,不難受嗎?
小魚:… 我可以告訴別人嗎?
小絲:… 還有誰能像我,認真聽你的愿望。
小魚:這2023年剛開始,你這是來給我添堵,故意的??
小絲:既然你不想告訴我,那我也不勉強了,畢竟…
小魚:你說話,說一半,留一半,不憋得難受嗎?
小絲:習慣了, 反正, 我不難受,難受的就是別人!
小魚:你可以啊, 長大了, 翅膀硬了。
小絲:別這么說, 畢竟, 我還有求于你。
小魚:我可以拒絕嗎?
小絲:我可以說拒絕無效嗎?
小魚:…
小絲:我在某音看到一個特效,蠻好的, 想讓你幫我搞一下。
小魚:深呼吸…深呼吸… 好吧, 你說吧,啥特效。
小絲:為了看的更直觀, 我再放個截個圖。
小魚:嗯,這個,我知道的。雨一直下,氣氛不再融洽,在同個屋檐下 你漸漸…
小絲:停,停,停,打住。你咋還唱上了。
小魚:哎嘜呀… 入景了。
小絲:可別正沒用的, 咱們要干正事了。
小魚:好好好, 那咱,就趁著新年, 許個愿望吧。
小絲:你瞅瞅, 這立flag,還得我魚哥。
2、代碼實戰(zhàn)
2.1 模塊介紹
2.1.1 Pygame 介紹
在這里,我們要用到的第三方庫是 Pygame,
我相信,關于pygame,有些同學還是很陌生的,這里,我也是簡單的嘮叨幾句:
Pygame 是一組用來開發(fā)游戲軟件的 Python 程序模塊,基于 SDL 庫的基礎上開發(fā);
Pygame 是一個高可移植性的模塊可以支持多個操作系統(tǒng),是跨平臺Python模塊,為游戲而設計的庫;
Pygame是免費的庫;
2.1.2 Pygame的display介紹
display模塊常用函數(shù)介紹:
- pygame.display.init():初始化display 模塊;
- pygame.display.quit():結束display 模塊;
- pygame.display.get_init():如果display已經(jīng)初始化,則返回True;
- pygame.display.set_mode():初始化一個準備顯示的窗口;
- pygame.display.get_surface():獲取當前顯示的Surface對象;
- pygame.display.flip():更新整個待顯示的 Surface 對象到屏幕上;
- pygame.display.list_modes():獲取全屏模式下可使用的分辨率;
2.1.3 Pygame的event介紹
event模塊常用函數(shù)介紹:
- pygame.event.pump() : 讓 Pygame 內(nèi)部自動處理事件 ;
- pygame.event.get() : 從隊列中獲取事件;
- pygame.event.poll() : 從隊列中獲取一個事件 ;
- pygame.event.wait() — 等待并從隊列中獲取一個事件;
- pygame.event.peek() : 檢測某類型事件是否在隊列中 ;
- pygame.event.clear() :從隊列中刪除所有的事件 ;
- pygame.event.event_name() : 通過 id 獲得該事件的字符串名字;
- pygame.event.set_blocked() : 控制哪些事件禁止進入隊列 ;
- pygame.event.set_allowed(): 控制哪些事件允許進入隊列 ;
- pygame.event.get_blocked() :檢測某一類型的事件是否被禁止進入隊列;
- pygame.event.set_grab() : 控制輸入設備與其他應用程序的共享 ;
- pygame.event.get_grab() : 檢測程序是否共享輸入設備 ;
- pygame.event.post() :放置一個新的事件到隊列中;
- pygame.event.Event(): 創(chuàng)建一個新的事件對象;
2.1.4 Pygame的font介紹
font模塊常用函數(shù)介紹:
- pygame.font.init() : 初始化字體模塊;
- pygame.font.quit(): 還原字體模塊;
- pygame.font.get_init() : 檢查字體模塊是否被初始化;
- pygame.font.get_default_font() : 獲得默認字體的文件名;
- pygame.font.get_fonts() : 獲取所有可使用的字體;
- pygame.font.match_font() : 在系統(tǒng)中搜索一種特殊的字體;
- pygame.font.SysFont() :從系統(tǒng)字體庫創(chuàng)建一個 Font 對象 類;
2.2 代碼示例
了解了Pygame的模塊的基本使用方法, 我們就來代碼實現(xiàn)。
代碼示例:
# -*- coding:utf-8 -*- # @Time : 2023-01-01 # @Author : Carl_DJ ''' 實現(xiàn)功能: 新年愿望代碼雨 ''' import random import pygame # 設置窗口的尺寸 Windows_width = 1000 Windows_heigh = 800 #創(chuàng)建代碼雨窗口 pygame.init() winsur = pygame.display.set_mode((Windows_width,Windows_heigh)) # 設置文字間距 font_px = 18 #設置文字大小 font_a = pygame.font.SysFont('',26) bg_suface = pygame.Surface((Windows_width,Windows_heigh),flags = pygame.SRCALPHA) pygame.Surface.convert(bg_suface) bg_suface.fill(pygame.Color(0,0,0,26)) #填充 winsur.fill((0,0,0)) # 設置代碼雨的內(nèi)容 message = '2023 HappyNewYear! 2023HappyNewYear! 2023 HappyNewYear!' #設置字體及顏色 texts = [font_a.render(message[i],True,(10,255,255)) for i in range(40)] # 設置屏幕顯示比例,防止字幕超過屏幕 colum = int(Windows_width/ font_px) drops = [0 for i in range (colum)] # 讓字幕一直顯示,避免一閃而過的尷尬 while True: #從隊列中獲取 for event in pygame.event.get(): #添加判斷,超過則退出 if event.type == pygame.QUIT: exit() elif event.type == pygame.KEYDOWN: change = pygame.key.get_pressed() if change[30]: exit() # 設置下落速度為50ms pygame.time.delay(50) #重新編譯圖像 winsur.blit(bg_suface,(0,0)) for i in range(len(drops)): text = random.choice(texts) #重排每個坐標點 winsur.blit(text,(i * font_px,drops[i] * font_px)) drops[i] += 1 #禁止行數(shù)超過屏幕的高 if drops[i] * 10 > Windows_heigh or random.random() > 0.95: drops[i] = 0 pygame.display.flip()
執(zhí)行效果
我再上一個截圖,讓你看的更直觀
3、總結
看到這里, 今天的分享就要結束了。
今天主要介紹的是Pygame庫的font、display、event等常用模塊。
現(xiàn)在再回顧功能的實現(xiàn)邏輯, 其實也不算太難嘛。
你看, 也就 70多行代碼呢。
2023,你肯定行的。
到此這篇關于Python實現(xiàn)新年愿望代碼雨效果的文章就介紹到這了,更多相關Python代碼雨內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python內(nèi)置函數(shù)map()的具體使用
Python中的map()函數(shù)是一個高效的內(nèi)置函數(shù),用于將指定函數(shù)應用于序列的每個元素,通過接收一個函數(shù)和一個或多個序列,本文就來詳細的介紹一下如何使用,感興趣的可以了解一下2024-09-09Python實現(xiàn)Word文檔轉換為圖片(JPG、PNG、SVG等常見格式)
將Word文檔以圖片形式導出,既能方便信息的分享,也能保護數(shù)據(jù)安全,避免被二次編輯,文本將介紹如何使用 Spire.Doc for Python 庫在Python程序中實現(xiàn)Word到圖片的批量轉換,需要的朋友可以參考下2024-06-06python?selenium在打開的瀏覽器中動態(tài)調整User?Agent
這篇文章主要介紹的是python?selenium在打開的瀏覽器中動態(tài)調整User?Agent,具體相關資料請需要的朋友參考下面文章詳細內(nèi)容,希望對你有所幫助2022-02-02Python 給定的經(jīng)緯度標注在地圖上的實現(xiàn)方法
今天小編就為大家分享一篇Python 給定的經(jīng)緯度標注在地圖上的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07python:批量統(tǒng)計xml中各類目標的數(shù)量案例
這篇文章主要介紹了python:批量統(tǒng)計xml中各類目標的數(shù)量案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03