国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】【進(jìn)階篇】十一、Pygame的精靈和碰撞檢測

這篇具有很好參考價值的文章主要介紹了【Python】【進(jìn)階篇】十一、Pygame的精靈和碰撞檢測。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

十一、Pygame的精靈和碰撞檢測

精靈(英文譯為 Sprite),其實(shí)在一個游戲程序中,精靈本質(zhì)指的是一張張小尺寸的圖片,比如游戲中的各種道具、人物、場景裝飾等,它們都可以看做成一張張小的“精靈”圖。

精靈有個特點(diǎn)就是允許精靈之間進(jìn)行交互,也稱之為碰撞,而碰撞檢測,指的就是檢測兩個精靈之間是否發(fā)生了碰撞。比如在貪吃蛇游戲中蛇的頭部是否與食物發(fā)生了碰撞,或者飛機(jī)大戰(zhàn)游戲中子彈是否擊中了外星人等等。當(dāng)檢測到碰撞發(fā)生后,接下來會觸發(fā)某些事件,比如子彈擊中外星人,外星人就會消失,玩家的得分也會隨之增加,并且在游戲屏幕上又會出現(xiàn)一個外星人。

Pygame 專門提供了一個處理精靈的模塊,也就是 sprite(pygame.sprite)模塊。通常情況下,我們使用該模塊的基類 Sprite 來創(chuàng)建一個子類,從而達(dá)到處理精靈的目的,該子類提供了操作精靈的常用屬性和方法,如下所示:

名稱 說明
self.image 加載要顯示的精靈圖片,控制圖片大小和填充色
self.rect 精靈圖片顯示在哪個位置
Sprite.update() 刷新精靈圖,使其相應(yīng)效果生效
Sprite.add() 添加精靈圖到精靈組中(groups)
Sprite.remove() 從精靈組中刪除選中的精靈圖
Sprite.kill() 刪除精靈組中全部的精靈
Sprite.alive() 判斷某個精靈是否屬于精靈組

注意,當(dāng)游戲中有大量的精靈時,操作它們將變得復(fù)雜,此時通過構(gòu)建精靈容器(group 類)也就是精靈組來統(tǒng)一管理這些精靈。構(gòu)建方法如下:

# 創(chuàng)建精靈組
group = pygame.sprite.Group()
# 向組內(nèi)添加一個精靈
group.add(sprite_one)

pygame.sprite模塊也提供了多種檢測精靈是否碰撞的方法,如下所示:

名稱 說明
pygame.sprite.collide_rect() 兩個精靈之間的矩形檢測,即矩形區(qū)域是否有交匯,返回一個布爾值。
pygame.sprite.collide_circle() 兩個精靈之間的圓形檢測,即圓形區(qū)域是否有交匯,返回一個布爾值。
pygame.sprite.collide_mask() 兩個精靈之間的像素蒙版檢測,更為精準(zhǔn)的一種檢測方式。
pygame.sprite.spritecollide() 精靈和精靈組之間的矩形碰撞檢測,一個組內(nèi)的所有精靈會逐一地對另外一個單個精靈進(jìn)行碰撞檢測,返回值是一個列表,包含了發(fā)生碰撞的所有精靈。
pygame.sprite.spritecollideany() 精靈和精靈組之間的矩形碰撞檢測,上述函數(shù)的變體,當(dāng)發(fā)生碰撞時,返回組內(nèi)的一個精靈,無碰撞發(fā)生時,返回 None。
pygame.sprite.groupcollide() 檢測在兩個組之間發(fā)生碰撞的所有精靈,它返回值是一個字典,將第一組中發(fā)生碰撞的精靈作為鍵,第二個組中發(fā)生碰撞的精靈作為值。

下面看一組簡單的示例,代碼如下所示:

import pygame


class Snake(pygame.sprite.Sprite):
    # 定義構(gòu)造函數(shù)
    def __init__(self, filename, location):
        # 調(diào)父類來初始化子類
        pygame.sprite.Sprite.__init__(self)
        # 加載圖片
        self.image = pygame.image.load(filename)
        # 獲取圖片rect區(qū)域
        self.rect = self.image.get_rect()
        # 設(shè)置位置
        self.rect.topleft = location


# 初始化pygame
pygame.init()
screen = pygame.display.set_mode((500, 400))
pygame.display.set_caption('Python自學(xué)網(wǎng)')
# 填充為白色屏幕
screen.fill((255, 255, 255))
filename = "./python.png"
location = (100, 150)
snake1 = Snake(filename, location)
# 碰撞檢測,必須有兩個精靈,因此再創(chuàng)建一個精靈,并使用location來控制第二個精靈的位置
location_2 = (100, 80)
snake2 = Snake('./hudie.jpg', location_2)
# 調(diào)用 collide_rect()進(jìn)行矩形區(qū)域檢測,返回一個布爾值,碰撞返回True,否則返回False
crash_result = pygame.sprite.collide_rect(snake1, snake2)
if crash_result:
    print("精靈碰撞了!")
    pass
else:
    print('精靈沒碰撞')
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    # 繪制精靈到屏幕上
    screen.blit(snake1.image, snake1.rect)
    screen.blit(snake2.image, snake2.rect)
    # 刷新顯示屏幕
    pygame.display.update()

除上述內(nèi)容外,Pygame 還提供許多其他模塊,比如 mixer(聲音)、movie(播放視頻)、music(播放音頻)、sndarray(操作聲音數(shù)據(jù))等模塊,由于這些模塊使用起來較為簡單,因此這里不再逐一介紹,感興趣的朋友可以閱讀 Pygame 官方文檔 —>點(diǎn)擊前往!文章來源地址http://www.zghlxwxcb.cn/news/detail-539209.html

到了這里,關(guān)于【Python】【進(jìn)階篇】十一、Pygame的精靈和碰撞檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python】【進(jìn)階篇】十、Pygame的Font文本和字體

    Pygame 通過 pygame.font 模塊來創(chuàng)建一個字體對象,從而實(shí)現(xiàn)繪制文本的目的。 該模塊的常用方法如下所示: 名稱 說明 pygame.font.init() 初始化字體模塊 pygame.font.quit()? 取消初始化字體模塊 pygame.font.get_init()? 檢查字體模塊是否被初始化,返回一個布爾值。 pygame.font.get_default_font

    2024年02月07日
    瀏覽(22)
  • Pygame 教程(6):使用精靈

    Pygame 教程(6):使用精靈

    本章,你將學(xué)習(xí)如何使用 Pygame 中的精靈。 上一章:監(jiān)測游戲時間 當(dāng)游戲?qū)ο笞兊梅倍嗟臅r候,把所有游戲?qū)ο蟮奶幚泶娣旁谝粋€個函數(shù)中,雖然是一種可行的方法,但是會使代碼邏輯比較混亂,難以維護(hù)。這時, 精靈(sprite) 應(yīng)運(yùn)而生。使用精靈,可以將游戲?qū)ο蠓庋b到

    2024年02月03日
    瀏覽(19)
  • Pygame 基礎(chǔ)教程12: 使用 精靈(Sprite) 實(shí)現(xiàn) 幀動畫(Animation)

    原文鏈接:https://xiets.blog.csdn.net/article/details/131395288 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Pygame 專欄(總目錄) 精靈(Sprite) 表示游戲畫面中基本的顯示元素,前面所介紹的精靈雖然位置可以動態(tài)移動,但都是一張靜態(tài)圖片。游戲中還有許多動態(tài)的動畫精靈,如一只飛翔的

    2024年01月17日
    瀏覽(27)
  • Pygame 基礎(chǔ)教程13: 使用 精靈(Sprite) 實(shí)現(xiàn) 按鈕、開關(guān)按鈕 和 復(fù)選框

    Pygame 基礎(chǔ)教程13: 使用 精靈(Sprite) 實(shí)現(xiàn) 按鈕、開關(guān)按鈕 和 復(fù)選框

    原文鏈接:https://xiets.blog.csdn.net/article/details/131395471 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Pygame 專欄(總目錄) Pygame 中并沒有按鈕、開關(guān)按鈕、復(fù)選框 等基礎(chǔ)交互組件,但實(shí)際游戲開發(fā)中又經(jīng)常用到。例如用于點(diǎn)擊按鈕開始游戲的「開始按鈕」,用于開啟/關(guān)閉背景音樂

    2024年02月04日
    瀏覽(28)
  • 【Python-Pygame】

    【Python-Pygame】

    Pygame 是一個專門用來開發(fā)游戲的 Python 模塊,主要為開發(fā)、設(shè)計 2D 電子游戲而生,它是一個免費(fèi)、開源的第三方軟件包, 支持多種操作系統(tǒng),具有良好的跨平臺性(比如 Windows、Linux、Mac 等)。 Pygame 教程適合想要了解 Python 游戲開發(fā)的人員學(xué)習(xí)。 SDL 是一套開放源代碼的跨平

    2024年04月23日
    瀏覽(49)
  • Python學(xué)習(xí)筆記-Pygame

    Python學(xué)習(xí)筆記-Pygame

    目錄 一、Pygame概述 1.安裝Pyganme 2.Pygame常用模塊介紹 2.1 display模塊常用方法 2.2 pygame.event模塊常用方法 2.3 Surface對象的常用方法 二、問題匯總 1.窗體問題 1.1 添加死循環(huán)之后出現(xiàn)窗體未響應(yīng)。 記述關(guān)于Pyganme開發(fā)的基本知識。 Pygame是跨平臺的python模塊,轉(zhuǎn)為電子游戲設(shè)計(包含

    2024年02月09日
    瀏覽(42)
  • Python游戲篇:pygame

    Python游戲篇:pygame

    pygame專門用于多媒體(如電子游戲開發(fā)),其中包含對圖像、聲音、視頻、事件、碰撞等支持, 如果想開發(fā)3D游戲,pygame就顯得力不從心了,可以看看panda3d。 pygame中的draw模塊可以在窗口上繪圖如線條、矩形、多邊形、圓、橢圓、圓弧等。 pygame中的image模塊用來加載圖片。

    2024年02月13日
    瀏覽(33)
  • Python Pygame使用詳解

    Python Pygame使用詳解 Pygame是一個強(qiáng)大的Python庫,用于開發(fā)2D游戲和多媒體應(yīng)用程序。它基于Simple DirectMedia Layer(SDL)庫,提供了一組功能豐富的工具和函數(shù),使開發(fā)者能夠輕松創(chuàng)建游戲、圖形和音頻應(yīng)用程序。本文將詳細(xì)介紹如何使用Pygame庫進(jìn)行游戲開發(fā),并提供相應(yīng)的源代碼

    2024年02月03日
    瀏覽(18)
  • 如何在pycharm中安裝pygame游戲插件 和Python中安裝pygame教程

    如何在pycharm中安裝pygame游戲插件 和Python中安裝pygame教程

    在用pycharm軟件開發(fā)python小游戲前,需要安裝pygame的插件,如何安裝呢? 方法一、包管理器安裝 1、在pycharm軟件中定位到? file? – settings 2、定位到: project (自己的項目中)–python interpreter,選擇右邊的 pip 3、雙擊 pip ,進(jìn)入查詢插件界面,輸入? pygame? ,進(jìn)行查詢這個插件

    2024年02月02日
    瀏覽(33)
  • python如何安裝pygame模塊

    python如何安裝pygame模塊

    游戲設(shè)計作品集,藝術(shù)留學(xué)申請條件/費(fèi)用/流程全面詳解查看詳情廣告 1 首先按鍵盤上的“Win + R”鍵。 游戲設(shè)計作品集,藝術(shù)留學(xué)申請_ACG國際藝術(shù)教育查看詳情廣告 2 在彈出的運(yùn)行窗口中輸入cmd,輸入完成后點(diǎn)擊確定。 3 然后在彈出的命令提示符窗口中輸入python,輸入完成后點(diǎn)

    2024年02月03日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包