欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pygame實(shí)現(xiàn)方塊動(dòng)畫(huà)實(shí)例講解

 更新時(shí)間:2021年12月03日 08:35:22   作者:我的天才女友  
在本篇文章里小編給大家整理的是一篇關(guān)于pygame實(shí)現(xiàn)方塊動(dòng)畫(huà)實(shí)例講解內(nèi)容,以后需要的朋友們可以學(xué)習(xí)參考下。

導(dǎo)入組件

首先導(dǎo)入需要的組件,pygame游戲組件,time是時(shí)間組件

import pygame, time, sys
from pygame.locals import *

繪制窗口

這里定義了一個(gè)480*600的屏幕,設(shè)置了窗口標(biāo)題,并設(shè)置了屏幕的填充顏色為白色

# 屏幕的寬高
WIDTH = 480
HEIGHT = 600

# 顏色的常量
WHITE = (255, 255, 255)

surface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 30)
pygame.display.set_caption("矩形動(dòng)畫(huà)")

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    surface.fill(WHITE)


    pygame.display.update()

在這里插入圖片描述

繪制矩形

RED = (255, 0, 0)

# 定義矩形字典變量
rect = {'rect': pygame.Rect(200, 200, 60, 46), 'color': RED}

---
    surface.fill(WHITE)

    pygame.draw.rect(surface,  rect['color'], rect['rect'])
---

讓矩形動(dòng)起來(lái)

從運(yùn)動(dòng)來(lái)看只有中心向四方移動(dòng)的四種可能。定義四個(gè)方向的常量。
在這里插入圖片描述

# 方向常量
UPLEFT = 'upleft'
UPRIGHT = 'upright'
DOWNLEFT = 'downleft'
DOWNRIGHT = 'downright'

然后定義矩形的移動(dòng)速度

# 矩形移動(dòng)的速度
MOVESPEED = 2 

給矩形設(shè)置一個(gè)初始的移動(dòng)方向

# 定義矩形字典變量
rect = {'rect': pygame.Rect(200, 200, 60, 46), 'color': RED, 'direction': UPLEFT}

根據(jù)矩形的移動(dòng)方向改變對(duì)應(yīng)的起始位置。根據(jù)矩形不同的位置改變矩形的起始位置。

    # 如果是上左,則x y 都減少
    if rect['direction'] == UPLEFT:
        rect['rect'].left -= MOVESPEED
        rect['rect'].top -= MOVESPEED

    # 如果是上右,則x 增加 y 減少
    if rect['direction'] == UPRIGHT:
        rect['rect'].left += MOVESPEED
        rect['rect'].top -= MOVESPEED

    # 如果是下左,則x 減少 y 增加
    if rect['direction'] == DOWNLEFT:
        rect['rect'].left -= MOVESPEED
        rect['rect'].top += MOVESPEED

    # 如果是下右,則x y 都增加
    if rect['direction'] == DOWNRIGHT:
        rect['rect'].left += MOVESPEED
        rect['rect'].top += MOVESPEED

不斷的改變矩形的位置,要注意防止移出窗口,當(dāng)觸及到邊緣,沿來(lái)的方向?qū)⒕匦胃淖兎较蚣纯伞?/p>

    # 如果上溢出窗口
    if rect['rect'].top <= 0:
        if rect['direction'] == UPLEFT:
            rect['direction'] = DOWNLEFT
        if rect['direction'] == UPRIGHT:
            rect['direction'] = DOWNRIGHT

    # 如果下溢出窗口
    if rect['rect'].bottom >= HEIGHT:
        if rect['direction'] == DOWNRIGHT:
            rect['direction'] = UPRIGHT
        if rect['direction'] == DOWNLEFT:
            rect['direction'] = UPLEFT

    # 如果右溢出窗口
    if rect['rect'].right >= WIDTH:
        if rect['direction'] == DOWNRIGHT:
            rect['direction'] = DOWNLEFT
        if rect['direction'] == UPRIGHT:
            rect['direction'] = UPLEFT

    # 如果右溢出窗口
    if rect['rect'].left <= 0:
        if rect['direction'] == DOWNLEFT:
            rect['direction'] = DOWNRIGHT
        if rect['direction'] == UPLEFT:
            rect['direction'] = UPRIGHT

這樣就實(shí)現(xiàn)了功能。每次循環(huán)讓時(shí)間暫停一會(huì)即可。

請(qǐng)?zhí)砑訄D片描述

這里附上所有代碼

import pygame, time, sys
from pygame.locals import *

# 屏幕的寬高
WIDTH = 480
HEIGHT = 600

# 顏色的常量
WHITE = (255, 255, 255)
RED = (255, 0, 0)

# 方向常量
UPLEFT = 'upleft'
UPRIGHT = 'upright'
DOWNLEFT = 'downleft'
DOWNRIGHT = 'downright'

# 矩形移動(dòng)的速度
MOVESPEED = 2

# 定義矩形字典變量
rect = {'rect': pygame.Rect(200, 200, 60, 46), 'color': RED, 'direction': UPLEFT}

surface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 30)
pygame.display.set_caption("矩形動(dòng)畫(huà)")

while True:
    print(rect)
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    surface.fill(WHITE)

    # 如果是上左,則x y 都減少
    if rect['direction'] == UPLEFT:
        rect['rect'].left -= MOVESPEED
        rect['rect'].top -= MOVESPEED

    # 如果是上右,則x 增加 y 減少
    if rect['direction'] == UPRIGHT:
        rect['rect'].left += MOVESPEED
        rect['rect'].top -= MOVESPEED

    # 如果是下左,則x 減少 y 增加
    if rect['direction'] == DOWNLEFT:
        rect['rect'].left -= MOVESPEED
        rect['rect'].top += MOVESPEED

    # 如果是下右,則x y 都增加
    if rect['direction'] == DOWNRIGHT:
        rect['rect'].left += MOVESPEED
        rect['rect'].top += MOVESPEED

    # 如果上溢出窗口
    if rect['rect'].top <= 0:
        if rect['direction'] == UPLEFT:
            rect['direction'] = DOWNLEFT
        if rect['direction'] == UPRIGHT:
            rect['direction'] = DOWNRIGHT

    # 如果下溢出窗口
    if rect['rect'].bottom >= HEIGHT:
        if rect['direction'] == DOWNRIGHT:
            rect['direction'] = UPRIGHT
        if rect['direction'] == DOWNLEFT:
            rect['direction'] = UPLEFT

    # 如果右溢出窗口
    if rect['rect'].right >= WIDTH:
        if rect['direction'] == DOWNRIGHT:
            rect['direction'] = DOWNLEFT
        if rect['direction'] == UPRIGHT:
            rect['direction'] = UPLEFT

    # 如果右溢出窗口
    if rect['rect'].left <= 0:
        if rect['direction'] == DOWNLEFT:
            rect['direction'] = DOWNRIGHT
        if rect['direction'] == UPLEFT:
            rect['direction'] = UPRIGHT

    pygame.draw.rect(surface,  rect['color'], rect['rect'])

    pygame.display.update()
    time.sleep(0.02)

到此這篇關(guān)于pygame實(shí)現(xiàn)方塊動(dòng)畫(huà)的文章就介紹到這了,更多相關(guān)pygame 方塊動(dòng)畫(huà)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 閉包在python中的應(yīng)用之translate和maketrans用法詳解

    閉包在python中的應(yīng)用之translate和maketrans用法詳解

    這篇文章主要介紹了閉包在python中的應(yīng)用之translate和maketrans用法,是比較實(shí)用的技巧,需要的朋友可以參考下
    2014-08-08
  • pytest官方文檔解讀fixtures的調(diào)用方式

    pytest官方文檔解讀fixtures的調(diào)用方式

    這篇文章主要為大家介紹了pytest官方文檔解讀fixtures的調(diào)用方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 如何在mac環(huán)境中用python處理protobuf

    如何在mac環(huán)境中用python處理protobuf

    這篇文章主要介紹了如何在mac環(huán)境中用python處理protobuf,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python函數(shù)常見(jiàn)關(guān)鍵字分享

    python函數(shù)常見(jiàn)關(guān)鍵字分享

    這篇文章主要向大家介紹的是python函數(shù)常見(jiàn)關(guān)鍵字,文章基于python的相關(guān)資料展開(kāi)對(duì)文章主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • python復(fù)制文件到指定目錄的實(shí)例

    python復(fù)制文件到指定目錄的實(shí)例

    下面小編就為大家分享一篇python復(fù)制文件到指定目錄的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)

    matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)

    這篇文章主要介紹了matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 非常全面的Python常見(jiàn)基礎(chǔ)面試題及答案

    非常全面的Python常見(jiàn)基礎(chǔ)面試題及答案

    Python是目前編程領(lǐng)域最受歡迎的語(yǔ)言,Python可用于許多領(lǐng)域,Web應(yīng)用程序開(kāi)發(fā),自動(dòng)化,數(shù)學(xué)建模,大數(shù)據(jù)應(yīng)用程序等等,這篇文章主要給大家介紹了關(guān)于Python常見(jiàn)基礎(chǔ)面試題及答案的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • python實(shí)現(xiàn)排序算法

    python實(shí)現(xiàn)排序算法

    這篇文章主要介紹了python實(shí)現(xiàn)排序算法,處理小序列不錯(cuò),需要的朋友可以參考下
    2014-02-02
  • Python可視化神器pyecharts繪制漏斗圖

    Python可視化神器pyecharts繪制漏斗圖

    這篇文章主要介紹了Python可視化神器pyecharts繪制漏斗圖,漏斗圖是由Light等在1984年提出,一般以單個(gè)研究的效應(yīng)量為橫坐標(biāo),樣本含量為縱坐標(biāo)做的散點(diǎn)圖
    2022-07-07
  • Python構(gòu)造函數(shù)與析構(gòu)函數(shù)超詳細(xì)分析

    Python構(gòu)造函數(shù)與析構(gòu)函數(shù)超詳細(xì)分析

    在python之中定義一個(gè)類(lèi)的時(shí)候會(huì)在類(lèi)中創(chuàng)建一個(gè)名為_(kāi)_init__的函數(shù),這個(gè)函數(shù)就叫做構(gòu)造函數(shù)。它的作用就是在實(shí)例化類(lèi)的時(shí)候去自動(dòng)的定義一些屬性和方法的值,而析構(gòu)函數(shù)恰恰是一個(gè)和它相反的函數(shù),這篇文章主要介紹了Python構(gòu)造函數(shù)與析構(gòu)函數(shù)
    2022-11-11

最新評(píng)論