婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python趣味挑戰之pygame實現無敵好看的百葉窗動態效果

Python趣味挑戰之pygame實現無敵好看的百葉窗動態效果

熱門標簽:小蘇云呼電話機器人 朝陽手機外呼系統 所得系統電梯怎樣主板設置外呼 地圖標注面積 儋州電話機器人 市場上的電銷機器人 北京電銷外呼系統加盟 北瀚ai電銷機器人官網手機版 佛山400電話辦理

一、案例知識點概述

(一)使用到的python庫

使用pygame庫、random庫和os、sys等系統庫。

其中:
pygame庫實現主體功能,提供窗口界面顯示、動態效果展示等
random庫實現隨機數的生成,通過隨機數實現動態百葉窗的上下左右選擇、百葉窗的數量選擇等功能。 os庫實現圖片資源的裝載和讀取。
sys庫實現退出操作等。

(二) 整體實現邏輯

通過WIDTH = 600HEIGHT = 600設置窗口的高度和寬度
通過runimagenextimage 設置當前顯示的圖像和下一張要顯示的圖像
通過num_part = random.randint(3,8)來設置要顯示的百葉窗的數量
通過num_list = []保存當前runimage拆分出來的百葉窗的surface資源,用于在百葉窗動態效果過程中顯示。
通過choose來設置是上下運動還是左右運動。

二、準備工作

(一)實現pygame的主窗口

import pygame,sys

pygame.init()
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption('大小框展示')
fcclock = pygame.time.Clock()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT or event.type == pygame.K_F1:
            pygame.quit()
            sys.exit()
    fcclock.tick(60)
    pygame.display.flip()  # 刷新窗口

黑黑的框,不截圖了。大家都懂。

(二)貼個圖顯示得好看點

import pygame,sys

pygame.init()
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption('大小框展示')
fcclock = pygame.time.Clock()
img = pygame.image.load('./image/aerial-alpine-ceresole-reale-desktop-backgrounds-1562.jpg').convert_alpha()
img = pygame.transform.scale(img, (500, 500))
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT or event.type == pygame.K_F1:
            pygame.quit()
            sys.exit()
    screen.blit(img,(0,0))
    fcclock.tick(60)
    pygame.display.flip()  # 刷新窗口

(三)圖片從哪里來

這里建議直接通過網絡上下載免費的、好看的圖片,并保存在指定的文件夾,用于過程中展現。

我認為有三種方法:

其一:使用爬蟲技術從網上下載圖片,可以開一個子線程負責采集網上圖片,然后加載到list列表中;
其二:可以直接對電腦中所有的盤進行自動檢索,然后加載到list列表中; 其三:指定目錄,然后加載到list列表中;
我這里偷個懶,選擇第三種方法實現。

具體實現代碼如下:

  path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

(四)圖片裝載

我為什么在初始化的時候就進行裝載呢?

原因是:解決效率問題,無需每次使用時重復加載,而且在初始化的時候就適配屏幕大小進行圖片縮放。

因此,我把這個過程打包成一個函數,方便后續調用,而且參數傳遞為:屏幕的大小。然后返回bglist對象。

for file in files:
    picture = pygame.transform.scale(pygame.image.load(file), (1440, 900))
    dSurface = picture
    # dSurface = pygame.image.load(file).convert()
    bglist.append(dSurface)

OK,圖片有了,窗口有了,那么就開始實現我們的業務邏輯吧。

三、核心功能模塊

(一)實現init_image函數初始化加載圖片到surface對象

def init_image():
    path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

    for file in files:
        picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT))
        dSurface = picture
        # dSurface = pygame.image.load(file).convert()
        bglist.append(dSurface)

(二)初始化相關變量

runimage = None
nextimage = None
flag = False   # FALSE沒有切屏 TRUE 切屏
flag2 = False
choose = 6

num_part = random.randint(3,8)  # 記錄分成多少塊矩形框
num_list = []
num_increse = 1
inc = random.choice([-1,1])
while num_increse=num_part:
    inc = -inc
    num_list.append(inc)
    num_increse += 1

這里,建議大家思考一下為什么要引入變量flag和flag2

(三)每次百葉窗切換完之后重置

def reset():
    global flag,runimage,nextimage,flag2,i,j,choose,num_part,num_list
    flag = False  # FALSE沒有切屏 TRUE 切屏
    flag2 = False
    choose = random.randint(6,7)
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

    num_part = random.randint(3,8)  # 記錄分成多少塊矩形框
    num_list = []
    num_increse = 1
    inc = random.choice([-1,1])
    while num_increse = num_part:
        inc = -inc
        num_list.append(inc)
        num_increse += 1

(四)實現百葉窗動態切換的run函數

def run():
    global flag,runimage,flag2,nextimage,i,j,choose,num_part,num_list
    reset()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or event.type == pygame.K_F1:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == pygame.K_SPACE:
                    if flag is False:# FALSE沒有切屏 TRUE 切屏
                        flag = True
                        flag2 = False
        screen.fill((255, 255, 255))  # 設置背景為白色
        if flag:
            if choose==6:
                select_rect = []
                kk = 0
                while kk  num_part:
                    tmp_rect = pygame.Rect(kk * WIDTH/num_part,0,WIDTH/num_part,HEIGHT)
                    select_rect.append(runimage.subsurface(tmp_rect).copy())
                    kk += 1
                screen.blit(nextimage, (0, 0))
                mm = 0
                for each in zip(select_rect,num_list):
                    if each[1]==1:
                        screen.blit(each[0], (i+mm*WIDTH/num_part, -j))
                    else:
                        screen.blit(each[0], (i+mm*WIDTH/num_part, j))
                    mm += 1
                j += step
                if j >= HEIGHT:
                    flag2 = True
            elif choose==7:
                select_rect = []
                kk = 0
                while kk  num_part:
                    tmp_rect = pygame.Rect(0,kk * HEIGHT/num_part,WIDTH,HEIGHT/num_part)
                    select_rect.append(runimage.subsurface(tmp_rect).copy())
                    kk += 1
                screen.blit(nextimage, (0, 0))
                mm = 0
                for each in zip(select_rect,num_list):
                    if each[1]==1:
                        screen.blit(each[0], (-i, j+mm*HEIGHT/num_part))
                    else:
                        screen.blit(each[0], (i, j+mm*HEIGHT/num_part))
                    mm += 1
                i += step
                if i >= WIDTH:
                    flag2 = True
        else:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (0, 0))
        if flag2:
            reset()
        fcclock.tick(fps)
        pygame.display.flip()  # 刷新窗口

(五)主函數

if __name__ == '__main__':
    init_image()
    run()

四、完整代碼

import sys, pygame
import os
import random

pygame.init()  # 初始化pygame類
WIDTH = 600
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))  # 設置窗口大小
pygame.display.set_caption('美麗的屏保')  # 設置窗口標題
tick = pygame.time.Clock()
fps = 60  # 設置刷新率,數字越大刷新率越高
fcclock = pygame.time.Clock()
runimage = None
nextimage = None
flag = False   # FALSE沒有切屏 TRUE 切屏
flag2 = False
choose = 6

num_part = random.randint(3,8)  # 記錄分成多少塊矩形框
num_list = []
num_increse = 1
inc = random.choice([-1,1])
while num_increse=num_part:
    inc = -inc
    num_list.append(inc)
    num_increse += 1

def init_image():
    path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

    for file in files:
        picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT))
        dSurface = picture
        bglist.append(dSurface)

def reset():
    global flag,runimage,nextimage,flag2,i,j,choose,num_part,num_list
    flag = False  # FALSE沒有切屏 TRUE 切屏
    flag2 = False
    i = 0
    j = 0
    choose = random.randint(6,7)
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

    num_part = random.randint(3,8)  # 記錄分成多少塊矩形框
    num_list = []
    num_increse = 1
    inc = random.choice([-1,1])
    while num_increse = num_part:
        inc = -inc
        num_list.append(inc)
        num_increse += 1


def run():
    global flag,runimage,flag2,nextimage,i,j,choose,num_part,num_list
    reset()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or event.type == pygame.K_F1:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == pygame.K_SPACE:
                    if flag is False:# FALSE沒有切屏 TRUE 切屏
                        flag = True
                        flag2 = False
        screen.fill((255, 255, 255))  # 設置背景為白色
        if flag:
            if choose==6:
                select_rect = []
                kk = 0
                while kk  num_part:
                    tmp_rect = pygame.Rect(kk * WIDTH/num_part,0,WIDTH/num_part,HEIGHT)
                    select_rect.append(runimage.subsurface(tmp_rect).copy())
                    kk += 1
                screen.blit(nextimage, (0, 0))
                mm = 0
                for each in zip(select_rect,num_list):
                    if each[1]==1:
                        screen.blit(each[0], (i+mm*WIDTH/num_part, -j))
                    else:
                        screen.blit(each[0], (i+mm*WIDTH/num_part, j))
                    mm += 1
                j += step
                if j >= HEIGHT:
                    flag2 = True
            elif choose==7:
                select_rect = []
                kk = 0
                while kk  num_part:
                    tmp_rect = pygame.Rect(0,kk * HEIGHT/num_part,WIDTH,HEIGHT/num_part)
                    select_rect.append(runimage.subsurface(tmp_rect).copy())
                    kk += 1
                screen.blit(nextimage, (0, 0))
                mm = 0
                for each in zip(select_rect,num_list):
                    if each[1]==1:
                        screen.blit(each[0], (-i, j+mm*HEIGHT/num_part))
                    else:
                        screen.blit(each[0], (i, j+mm*HEIGHT/num_part))
                    mm += 1
                i += step
                if i >= WIDTH:
                    flag2 = True
        else:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (0, 0))
        if flag2:
            reset()
        fcclock.tick(fps)
        pygame.display.flip()  # 刷新窗口

if __name__ == '__main__':
    init_image()
    run()

五、運行效果

OK,寫完,其實還是蠻有趣的,大家可以自動動手敲敲,也許比我寫的更好。

到此這篇關于Python趣味挑戰之pygame實現無敵好看的百葉窗動態效果的文章就介紹到這了,更多相關pygame實現百葉窗動態效果內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python趣味挑戰之教你用pygame畫進度條
  • Python趣味挑戰之用pygame實現簡單的金幣旋轉效果
  • Python3+Pygame實現射擊游戲完整代碼
  • python 基于pygame實現俄羅斯方塊
  • python pygame 憤怒的小鳥游戲示例代碼
  • Python3.9.0 a1安裝pygame出錯解決全過程(小結)
  • python之pygame模塊實現飛機大戰完整代碼
  • Python使用Pygame繪制時鐘
  • Python3.8安裝Pygame教程步驟詳解
  • python pygame入門教程

標簽:云南 定西 龍巖 商丘 酒泉 江蘇 金融催收 寧夏

巨人網絡通訊聲明:本文標題《Python趣味挑戰之pygame實現無敵好看的百葉窗動態效果》,本文關鍵詞  Python,趣味,挑戰,之,pygame,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python趣味挑戰之pygame實現無敵好看的百葉窗動態效果》相關的同類信息!
  • 本頁收集關于Python趣味挑戰之pygame實現無敵好看的百葉窗動態效果的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    天天色图综合网| 欧美国产精品一区二区| 五月综合激情婷婷六月色窝| 精品欧美一区二区三区精品久久 | 欧美日韩中文国产| 丁香桃色午夜亚洲一区二区三区| 五月激情综合色| 亚洲综合清纯丝袜自拍| 日韩毛片视频在线看| 中文字幕一区二区三区在线观看 | 国产视频911| 欧美精品一区二区在线播放| 日韩欧美国产一二三区| 777久久久精品| 欧美一区二区人人喊爽| 欧美一区二区久久久| 欧美精品乱码久久久久久| 欧美在线免费观看亚洲| 亚洲免费看黄网站| 中文成人综合网| 视频一区二区中文字幕| 性久久久久久久久| 亚洲免费电影在线| 午夜精品久久久久久久99水蜜桃| 亚洲色图在线视频| 亚欧色一区w666天堂| 精品一区二区三区不卡| 在线不卡欧美精品一区二区三区| 国产日韩亚洲欧美综合| 久久伊人蜜桃av一区二区| 日韩三级中文字幕| 精品久久久久久亚洲综合网| 日韩欧美国产综合一区| 亚洲毛片av在线| 亚洲欧美另类图片小说| 亚洲国产精品久久久男人的天堂| 亚洲成a人v欧美综合天堂| 免费高清在线一区| 懂色av一区二区三区蜜臀| 日本乱码高清不卡字幕| 日韩欧美成人午夜| 国产精品热久久久久夜色精品三区| 一区二区三区蜜桃| 三级久久三级久久久| 粉嫩蜜臀av国产精品网站| 欧美视频一二三区| 欧美一级黄色大片| 国产精品久久久久aaaa樱花| 日韩综合小视频| 成人动漫一区二区在线| 欧美一卡二卡三卡| 日韩久久一区二区| 国产自产视频一区二区三区| 日本道精品一区二区三区| 精品少妇一区二区三区视频免付费 | 精品一区二区三区视频 | 亚洲精品v日韩精品| 麻豆国产精品视频| 日本国产一区二区| 日本一区二区三区视频视频| 午夜激情久久久| 成人性视频网站| 日韩欧美在线123| 色噜噜夜夜夜综合网| 麻豆成人免费电影| 久久精品一区八戒影视| 色综合色狠狠综合色| 亚洲欧洲国产日韩| 欧美久久久一区| 激情小说亚洲一区| 亚洲一二三级电影| 精品国产第一区二区三区观看体验| 日本不卡一区二区三区| 亚洲裸体xxx| 中文字幕亚洲一区二区av在线 | 卡一卡二国产精品| 日本韩国欧美在线| 亚洲欧美影音先锋| 国产麻豆日韩欧美久久| 一个色在线综合| 国产精品综合二区| 精品电影一区二区| 久久激情五月激情| 91精品国产高清一区二区三区| 曰韩精品一区二区| 日本乱人伦一区| 亚洲最大成人网4388xx| 色呦呦日韩精品| 亚洲伦在线观看| 91色综合久久久久婷婷| 亚洲精品久久7777| 97精品超碰一区二区三区| 综合欧美一区二区三区| 97se亚洲国产综合自在线| 亚洲免费毛片网站| 欧洲另类一二三四区| 亚洲制服欧美中文字幕中文字幕| 色噜噜久久综合| 一级精品视频在线观看宜春院 | 亚洲日本在线a| 91久久精品午夜一区二区| 洋洋av久久久久久久一区| 欧美日韩精品一区二区三区蜜桃 | 国产99久久久精品| www国产精品av| www.欧美.com| 亚洲免费色视频| 欧美剧在线免费观看网站 | 亚洲激情在线播放| 日韩成人一区二区| 日本va欧美va欧美va精品| 日本午夜一本久久久综合| 国产做a爰片久久毛片| 成人晚上爱看视频| 色狠狠av一区二区三区| 精品日韩在线一区| 亚洲欧美日韩国产手机在线| 美女在线视频一区| 国产剧情一区二区三区| 久久久久国产一区二区三区四区| 成人听书哪个软件好| 亚洲三级小视频| 欧美一级视频精品观看| 国产成人亚洲精品青草天美| 亚洲精品免费电影| 日韩欧美一二三| 欧美日韩视频专区在线播放| 精品一区二区在线免费观看| 国产日产精品1区| 欧美人与z0zoxxxx视频| 成人性生交大片免费看中文| 亚洲第一成人在线| 久久欧美一区二区| 欧美日韩精品福利| 国产精品888| 日本人妖一区二区| 亚洲免费观看高清完整版在线| 欧美一二三区精品| 91麻豆精东视频| 国产精品羞羞答答xxdd| 亚洲第一av色| 亚洲欧美日韩系列| 国产欧美精品一区| 日韩一区二区精品在线观看| 色国产综合视频| 成人av在线网| 日本不卡一二三| 亚洲免费观看在线视频| 国产欧美日韩另类一区| 91精品国产黑色紧身裤美女| 91丨九色丨国产丨porny| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲日穴在线视频| 久久久www成人免费无遮挡大片| 欧美日韩国产系列| 欧洲一区二区三区在线| 99久久综合国产精品| 美脚の诱脚舐め脚责91| 国产精品久久久久一区二区三区| 91理论电影在线观看| 91农村精品一区二区在线| 亚洲欧美一区二区三区孕妇| 色屁屁一区二区| 久久精品久久久精品美女| 欧美一级黄色片| 国产黄色成人av| 亚洲永久精品国产| 日韩精品中文字幕在线不卡尤物 | 亚洲视频你懂的| 2023国产精华国产精品| 欧美另类久久久品| 在线播放91灌醉迷j高跟美女| 色综合 综合色| 中文字幕高清一区| 亚洲婷婷在线视频| 色综合久久综合中文综合网| 亚洲主播在线观看| 国产精品天干天干在观线| 精品久久久久久久久久久久包黑料| 国产麻豆9l精品三级站| 奇米亚洲午夜久久精品| 亚洲一二三专区| 成人欧美一区二区三区视频网页| 欧美一区二区黄色| 91精品国产麻豆国产自产在线 | 国产成人在线网站| 午夜精品久久久久久久99樱桃| 久久夜色精品一区| 亚洲欧美日韩系列| 久久综合一区二区| 51精品久久久久久久蜜臀| 成人av电影在线播放| 丁香啪啪综合成人亚洲小说| 椎名由奈av一区二区三区| 99国产精品99久久久久久| 国产午夜三级一区二区三| 日韩视频免费观看高清完整版 | 亚洲欧美一区二区三区极速播放 | 日本vs亚洲vs韩国一区三区| 日本aⅴ精品一区二区三区|