小編寫此篇文章的目的,主要是給大家來做一個解答,解答關于pygame中Rect對象的相關內(nèi)容知識,下面就給大家做一個比較詳細的解答。
class pygame.Rect Rect
對象的屬性:
Rect表示的區(qū)域必須位于一個Surface對象之上,比如游戲的主窗口(screen)。上述方法由四個關鍵參數(shù)值構(gòu)成,分別是left、top、width、height,為了方便大家理解這些距離的含義,下面給出了一張示意圖:
注意:在Pygame中以游戲主窗口的左上角為坐標原點。
1.返回一個坐標數(shù)字
x,y top,left,bottom,right centerx,centerysize width,height w,h;
2.返回一個(X,Y)坐標數(shù)組
topleft(左上) bottomleft(左下) bottomright(右下) midtop(中上) midleft(左中) midbottom(底中) midright(右中) center(中心點坐標)
方法
Rect是用于存儲矩形坐標的Pygame對象。
Rect(left,top,width,height)->Rect Rect((left,top),(width,height))->Rect Rect(object)->Rect
方法
Rect是用于存儲矩形坐標的Pygame對象。
Rect(left,top,width,height)->Rect Rect((left,top),(width,height))->Rect Rect(object)->Rect
Rect(rectangle)指的是矩形,或者長方形,在Pygame中我們使用Rect()方法來創(chuàng)建一個指定位置,大小的矩形區(qū)域。
Rect(矩形區(qū)域)對象提供了一些方法。如下表所示:
方法 說明 返回值
pygame.Rect.copy()—拷貝Rect對象,返回與原始矩形具有相同位置和大小的新矩形。Rect對象
pygame.Rect.move()—移動Rect對象,返回按給定偏移量移動后的新矩形。x和y參數(shù)可以是任何整數(shù)值,正數(shù)或負數(shù)。Rect對象
pygame.Rect.move_ip()—原地移動Rect對象,與Rect.move()方法相同,但僅操作無返回副本。None
pygame.Rect.inflate()—放大和縮小Rect對象的尺寸,返回一個新矩形,其大小由給定的偏移量更改。矩形仍圍繞其當前中心。負值將縮小矩形。Rect對象
pygame.Rect.inflate_ip()—原地放大和縮小Rect對象的尺寸,與Rect.inflate()方法相同,但僅操作無返回副本。None
pygame.Rect.clamp()—將一個Rect對象移動到另一個Rect對象的中心,返回一個新的矩形,該矩形被移動到參數(shù)Rect內(nèi)。如果矩形太大而不能放在內(nèi)部,它將在參數(shù)Rect內(nèi)居中,但其大小不會更改。Rect對象
pygame.Rect.clamp_ip()—原地將一個Rect對象移動到另一個Rect對象的中心None
pygame.Rect.clip()—獲取兩個Rect對象互相重疊的部分,返回一個新矩形,該矩形被裁剪為完全位于參數(shù)矩形內(nèi)。如果兩個矩形開始時沒有重疊,則返回一個0大小的矩形。Rect對象
pygame.Rect.union()—將兩個Rect對象合并,返回完全覆蓋兩個提供的矩形區(qū)域的新矩形。新矩形內(nèi)可能有原始矩形未覆蓋的區(qū)域。Rect對象
pygame.Rect.union_ip()—原地將兩個Rect對象合并,與Rect.union()方法相同,但僅操作無返回副本。None
pygame.Rect.unionall()—將多個Rect對象合并Rect對象
pygame.Rect.unionall_ip()—原地將多個Rect對象合并None
pygame.Rect.fit()—按照一定的寬高比調(diào)整Rect對象,返回一個新矩形,該矩形被移動并調(diào)整大小以適應另一個矩形。保留原始矩形的縱橫比,因此新矩形的寬度或高度可能小于目標矩形。Rect對象
pygame.Rect.normalize()—翻轉(zhuǎn)Rect對象(如果尺寸為負數(shù)),如果矩形的寬度或高度為負,則此操作將翻轉(zhuǎn)矩形的寬度或高度。矩形將保持在同一位置,只交換邊。None
pygame.Rect.contains()—檢測一個Rect對象是否完全包含在該Rect對象內(nèi),contains(Rect)->bool當參數(shù)完全在Rect內(nèi)時返回true。bool
pygame.Rect.collidepoint()—檢測一個點是否包含在該Rect對象內(nèi),如果給定點位于矩形內(nèi),則返回true。沿右邊緣或下邊緣的點不被視為位于矩形內(nèi)。注意:對于矩形和直線之間的碰撞檢測,可以使用clipline()方法。bool
pygame.Rect.colliderect()—檢測兩個Rect對象是否重疊,如果矩形的任何部分重疊(除了頂部+底部或左側(cè)+右側(cè)邊緣),則返回true。注意:對于矩形和直線之間的碰撞檢測,可以使用clipline()方法。bool
pygame.Rect.collidelist()—檢測該Rect對象是否與列表中的任何一個矩形有交集,測試矩形是否與一系列矩形中的任何矩形碰撞。返回找到的第一個沖突的索引。如果未找到?jīng)_突,則返回索引-1。bool
pygame.Rect.collidelistall()—檢測該Rect對象與列表中的每個矩形是否有交集,返回包含與矩形沖突的矩形的所有索引的列表。如果未找到相交矩形,則返回空列表。bool
pygame.Rect.collidedict()—檢測該Rect對象是否與字典中的任何一個矩形有交集bool
pygame.Rect.collidedictall()—檢測該Rect對象與字典中的每個矩形是否有交集[(key,value),…]
下面看一組簡單的示例演示,如下所示:
import pygame #對應left/top/width/height rect1=pygame.Rect(0,0,100,100) print('x的值是{};y的值是{}'.format(rect1.x,rect1.y)) print('bottom的值是{};right的值是{}'.format(rect1.bottom,rect1.right)) #設置居中的距離 print(rect1.center,rect1.centerx,rect1.centery) #返回值為(centerx,top) print(rect1.midtop) #返回值為(right,centery)的元組 print(rect1.midright) #返回值為(left,bottom) print(rect1.bottomleft) #返回矩形區(qū)域大小,元組格式 print(rect1.size) 輸出結(jié)果如下: x的值是0;y的值是0 bottom的值是100;right的值是100 #設置中心努力 (50,50)50 50 (50,0) #midright (100,50) #bottomleft (0,100) #size (100,100)
我們還可以通過屬性對來設置,或者者更改矩形區(qū)域的大小,如下所示:
rect1.left=30 rect1.center=(70,70)
除了通過Rect對象來構(gòu)造一個矩形區(qū)域之外,我們還可以使用rect屬性來構(gòu)建一個矩形區(qū)域。在Pygame中有許多函數(shù)都提供了rect屬性,比如有下列函數(shù):
surface.fill((0,0,255),rect=(100,100,100,50))
上述代碼會在surface對象的區(qū)域內(nèi)選定一個rect區(qū)域,并將該區(qū)域填充為藍色(RGB(0,0,255))。
示例:
import pygame import sys pygame.init() size=width,height=300,300 bg=(255,255,255)#RGB白色 #創(chuàng)建指定大小的窗口Surface screen=pygame.display.set_mode(size) #設置窗口標題 pygame.display.set_caption("Python Demo") clock=pygame.time.Clock() rect1=pygame.Rect(0,0,100,50) rect2=pygame.Rect(50,50,200,200) while True: for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() sys.exit() screen.fill(bg) pygame.draw.rect(screen,(255,0,0),rect1) pygame.draw.rect(screen,(0,255,0),rect2) pygame.draw.rect(screen,(0,0,255),rect1.fit(rect2)) pygame.display.flip() clock.tick(10)
剪切圖片的應用
1)加載圖片shoot_img=pygame.image.load(r'F:Python STUDYimagesme11.png')
2)矩形剪切圖片
hero1_rect=pygame.Rect(0,0,136,168) hero2=shoot1_img.subsurface(hero1_rect)
綜上所述,pygame中rect對象就為大家介紹到這里了,希望可以為各位讀者帶來幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/127744.html
Python pygame作為一門常見的技能,其實,它的應用范圍還是比較的廣泛的,那么,它是怎么實現(xiàn)其拼圖游戲呢?下面就以案例的形式,去給大家做個解答,下面就給大家詳細解答下?! ygame介紹 Python Pygame是一款專門為開發(fā)和設計2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統(tǒng),具有良好的跨平臺性。Pygame由Pete Shinners于20...
pygame模塊是一個可以跨平臺的模塊,主要就是作為游戲開發(fā)來進行使用的,那么,怎么才能夠?qū)崿F(xiàn)其游戲開發(fā)的技能了?比如說,怎么實現(xiàn)使用pygame去實現(xiàn)拼圖的游戲呢?下面就給大家詳細解答下?! ygame介紹 Python Pygame是一款專門為開發(fā)和設計2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統(tǒng),具有良好的跨平臺性。Pygame由Pete Shin...
小編寫這篇文章的一個主要目的,主要是用來給大家去做個相關的介紹,介紹的內(nèi)容主要是涉及到相關的游戲?qū)崿F(xiàn),比如怎么去做游戲呢?比如說,怎么去做打豆豆的游戲呢?關于這方面的內(nèi)容,下面就給大家詳細解答下?! ⌒蜓浴 ∏疤焱砩?,玩起了在我們的學生時代經(jīng)常玩的一些游戲,吃豆豆,但是我發(fā)現(xiàn),在一局游戲當中,我們命的條數(shù)是比較少的,我根本不能吃完所有的豆豆,總是被敵人吃掉 于是,我在想怎么能夠保證我達到吃完...
摘要:和標志,用于表示飛船是否正在移動,用于實現(xiàn)飛船在不松開按鍵下連續(xù)移動。重寫了函數(shù),用于繪制飛船模塊該模塊主要是集中處理游戲中發(fā)生的各種事件。函數(shù)用于監(jiān)聽游戲的事件,比如,它表示游戲推出事件和分別表示鍵盤按下與松開事件。 《Python編程:從入門到實踐》筆記。本章主要學習如何使用pygame編寫一個簡單的小飛機打外星人的游戲,由于本人對用python寫游戲并不是特別感興趣,所以主要是看...
此篇文章主要是闡述了Pygame精準檢測圖象撞擊,在使用Pygame寫游戲時,有些人可能遇到2個Rect目標撞擊可是目標中間也有室內(nèi)空間間距問題,這兒,將教給大家用一個方法準確地檢驗圖象撞擊,需用的小伙伴可以借鑒一下?! ≡谑褂肞ygame寫游戲時,有些人可能遇到2個Rect目標撞擊可是目標中間也有室內(nèi)空間間距問題,這兒,將教給大家用一個方法準確地檢驗圖象撞擊?! 〖俣ù蠹抑饕袃煞N圖象(為非...
閱讀 928·2023-01-14 11:38
閱讀 902·2023-01-14 11:04
閱讀 759·2023-01-14 10:48
閱讀 2065·2023-01-14 10:34
閱讀 968·2023-01-14 10:24
閱讀 844·2023-01-14 10:18
閱讀 512·2023-01-14 10:09
閱讀 591·2023-01-14 10:02