小編寫此篇文章的目的,主要是給大家來做一個解答,解答關于pygame中Rect對象的相關內容知識,下面就給大家做一個比較詳細的解答。
class pygame.Rect Rect
對象的屬性:
Rect表示的區域必須位于一個Surface對象之上,比如游戲的主窗口(screen)。上述方法由四個關鍵參數值構成,分別是left、top、width、height,為了方便大家理解這些距離的含義,下面給出了一張示意圖:
注意:在Pygame中以游戲主窗口的左上角為坐標原點。
1.返回一個坐標數字
x,y top,left,bottom,right centerx,centerysize width,height w,h;
2.返回一個(X,Y)坐標數組
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()方法來創建一個指定位置,大小的矩形區域。
Rect(矩形區域)對象提供了一些方法。如下表所示:
方法 說明 返回值
pygame.Rect.copy()—拷貝Rect對象,返回與原始矩形具有相同位置和大小的新矩形。Rect對象
pygame.Rect.move()—移動Rect對象,返回按給定偏移量移動后的新矩形。x和y參數可以是任何整數值,正數或負數。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對象的中心,返回一個新的矩形,該矩形被移動到參數Rect內。如果矩形太大而不能放在內部,它將在參數Rect內居中,但其大小不會更改。Rect對象
pygame.Rect.clamp_ip()—原地將一個Rect對象移動到另一個Rect對象的中心None
pygame.Rect.clip()—獲取兩個Rect對象互相重疊的部分,返回一個新矩形,該矩形被裁剪為完全位于參數矩形內。如果兩個矩形開始時沒有重疊,則返回一個0大小的矩形。Rect對象
pygame.Rect.union()—將兩個Rect對象合并,返回完全覆蓋兩個提供的矩形區域的新矩形。新矩形內可能有原始矩形未覆蓋的區域。Rect對象
pygame.Rect.union_ip()—原地將兩個Rect對象合并,與Rect.union()方法相同,但僅操作無返回副本。None
pygame.Rect.unionall()—將多個Rect對象合并Rect對象
pygame.Rect.unionall_ip()—原地將多個Rect對象合并None
pygame.Rect.fit()—按照一定的寬高比調整Rect對象,返回一個新矩形,該矩形被移動并調整大小以適應另一個矩形。保留原始矩形的縱橫比,因此新矩形的寬度或高度可能小于目標矩形。Rect對象
pygame.Rect.normalize()—翻轉Rect對象(如果尺寸為負數),如果矩形的寬度或高度為負,則此操作將翻轉矩形的寬度或高度。矩形將保持在同一位置,只交換邊。None
pygame.Rect.contains()—檢測一個Rect對象是否完全包含在該Rect對象內,contains(Rect)->bool當參數完全在Rect內時返回true。bool
pygame.Rect.collidepoint()—檢測一個點是否包含在該Rect對象內,如果給定點位于矩形內,則返回true。沿右邊緣或下邊緣的點不被視為位于矩形內。注意:對于矩形和直線之間的碰撞檢測,可以使用clipline()方法。bool
pygame.Rect.colliderect()—檢測兩個Rect對象是否重疊,如果矩形的任何部分重疊(除了頂部+底部或左側+右側邊緣),則返回true。注意:對于矩形和直線之間的碰撞檢測,可以使用clipline()方法。bool
pygame.Rect.collidelist()—檢測該Rect對象是否與列表中的任何一個矩形有交集,測試矩形是否與一系列矩形中的任何矩形碰撞。返回找到的第一個沖突的索引。如果未找到沖突,則返回索引-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) #返回矩形區域大小,元組格式 print(rect1.size) 輸出結果如下: x的值是0;y的值是0 bottom的值是100;right的值是100 #設置中心努力 (50,50)50 50 (50,0) #midright (100,50) #bottomleft (0,100) #size (100,100)
我們還可以通過屬性對來設置,或者者更改矩形區域的大小,如下所示:
rect1.left=30 rect1.center=(70,70)
除了通過Rect對象來構造一個矩形區域之外,我們還可以使用rect屬性來構建一個矩形區域。在Pygame中有許多函數都提供了rect屬性,比如有下列函數:
surface.fill((0,0,255),rect=(100,100,100,50))
上述代碼會在surface對象的區域內選定一個rect區域,并將該區域填充為藍色(RGB(0,0,255))。
示例:
import pygame import sys pygame.init() size=width,height=300,300 bg=(255,255,255)#RGB白色 #創建指定大小的窗口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對象就為大家介紹到這里了,希望可以為各位讀者帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127744.html
Python pygame作為一門常見的技能,其實,它的應用范圍還是比較的廣泛的,那么,它是怎么實現其拼圖游戲呢?下面就以案例的形式,去給大家做個解答,下面就給大家詳細解答下?! ygame介紹 Python Pygame是一款專門為開發和設計2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統,具有良好的跨平臺性。Pygame由Pete Shinners于20...
pygame模塊是一個可以跨平臺的模塊,主要就是作為游戲開發來進行使用的,那么,怎么才能夠實現其游戲開發的技能了?比如說,怎么實現使用pygame去實現拼圖的游戲呢?下面就給大家詳細解答下。 pygame介紹 Python Pygame是一款專門為開發和設計2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統,具有良好的跨平臺性。Pygame由Pete Shin...
小編寫這篇文章的一個主要目的,主要是用來給大家去做個相關的介紹,介紹的內容主要是涉及到相關的游戲實現,比如怎么去做游戲呢?比如說,怎么去做打豆豆的游戲呢?關于這方面的內容,下面就給大家詳細解答下。 序言 前天晚上,玩起了在我們的學生時代經常玩的一些游戲,吃豆豆,但是我發現,在一局游戲當中,我們命的條數是比較少的,我根本不能吃完所有的豆豆,總是被敵人吃掉 于是,我在想怎么能夠保證我達到吃完...
摘要:和標志,用于表示飛船是否正在移動,用于實現飛船在不松開按鍵下連續移動。重寫了函數,用于繪制飛船模塊該模塊主要是集中處理游戲中發生的各種事件。函數用于監聽游戲的事件,比如,它表示游戲推出事件和分別表示鍵盤按下與松開事件。 《Python編程:從入門到實踐》筆記。本章主要學習如何使用pygame編寫一個簡單的小飛機打外星人的游戲,由于本人對用python寫游戲并不是特別感興趣,所以主要是看...
此篇文章主要是闡述了Pygame精準檢測圖象撞擊,在使用Pygame寫游戲時,有些人可能遇到2個Rect目標撞擊可是目標中間也有室內空間間距問題,這兒,將教給大家用一個方法準確地檢驗圖象撞擊,需用的小伙伴可以借鑒一下。 在使用Pygame寫游戲時,有些人可能遇到2個Rect目標撞擊可是目標中間也有室內空間間距問題,這兒,將教給大家用一個方法準確地檢驗圖象撞擊?! 〖俣ù蠹抑饕袃煞N圖象(為非...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02