網站首頁 編程語言 正文
1. 介紹
前面我們嘗試通過python實現了代碼雨以及字母隨機閃爍的效果,這次,我們再來實現一個代碼的線性掃面。
同樣的,此次我們仍然是使用30行代碼來實現這個效果。
此次我們只是用pygame
與random
兩個包,首先,將他們導入:
import pygame import random
之后,我們進行pygame界面的初始化工作:
# 參數 SCREENSIZE=(600,600) BLACK=(0,0,0,13) # 初始化 pygame.init() font = pygame.font.SysFont('宋體', 20) screen = pygame.display.set_mode(SCREENSIZE) surface = pygame.Surface(SCREENSIZE, flags=pygame.SRCALPHA) pygame.Surface.convert(surface) surface.fill(BLACK) screen.fill(BLACK)
之后設置一下我們字體的相關內容:
# 內容 lib=[chr(i) for i in range(48,48+10)] + [chr(i) for i in range(97,97+26)] # [0-9 a-z] texts = [font.render(l, True, (0, 255, 0)) for l in lib] cols = list(range(40)) # 字體15, 窗口600
最后在一個循環中,更新界面并繪制出代碼雨:
while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() pygame.time.delay(33) screen.blit(surface, (0, 0)) for i in range(n:=len(cols)): text = random.choice(texts) # 字母掃描 screen.blit(text, (i * 15, cols[i] * 15)) cols[i] = (cols[i]+1)%40 pygame.display.flip()
2. 完整代碼
完整代碼如下:
import pygame import random # 參數 SCREENSIZE=(600,600) BLACK=(0,0,0,13) # 初始化 pygame.init() font = pygame.font.SysFont('宋體', 20) screen = pygame.display.set_mode(SCREENSIZE) surface = pygame.Surface(SCREENSIZE, flags=pygame.SRCALPHA) pygame.Surface.convert(surface) surface.fill(BLACK) screen.fill(BLACK) # 內容 lib=[chr(i) for i in range(48,48+10)] + [chr(i) for i in range(97,97+26)] # [0-9 a-z] texts = [font.render(l, True, (0, 255, 0)) for l in lib] cols = list(range(40)) # 字體15, 窗口600 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() pygame.time.delay(33) screen.blit(surface, (0, 0)) for i in range(n:=len(cols)): text = random.choice(texts) # 字母掃描 screen.blit(text, (i * 15, cols[i] * 15)) cols[i] = (cols[i]+1)%40 pygame.display.flip()
截止到現在,我們已經學會了用簡簡單單的30行代碼實現代碼雨,閃爍代碼以及線性掃描三種炫酷的特效了,相信大家在這個過程中也對 python 有了一個最初步的理解與認識,
原文鏈接:https://juejin.cn/post/7126947051769692167
相關推薦
- 2022-06-28 C++實現String與UF8互轉_C 語言
- 2023-07-27 修改el-button 的樣式
- 2023-03-23 Golang學習之內存逃逸分析_Golang
- 2022-09-09 使用PyTorch實現隨機搜索策略_python
- 2022-12-08 python求兩個時間的時間差(實例代碼)_python
- 2023-11-14 docker啟動報錯:Job for docker. service failed because
- 2023-11-18 Linux/Ubuntu/Arm設備中通過/proc/stat等文件計算Cpu使用率
- 2022-09-15 React組件三大屬性之state,props,refs_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支