Pygame Rect區域位置的使用(圖文)

Rect(rectangle)指的是矩形,或者長方形,在 Pygame 中我們使用 Rect() 方法來創建一個指定位置,大小的矩形區域。函數的語法格式如下:

rect =pygame.Rect(left,top,width,height) 

Rect 表示的區域必須位於一個 Surface 對象之上,比如遊戲的主窗口(screen)。上述方法由四個關鍵參數值構成,分別是 left、top、width、height,為瞭方便大傢理解這些距離的含義,下面給出瞭一張示意圖:

註意:在 Pygame 中以遊戲主窗口的左上角為坐標原點。

下面看一組簡單的使用示例,如下所示:

import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
pygame.display.set_caption('c語言中文網')
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.png")
rect1 = pygame.Rect(50,50,100,100)
# 在原圖的基礎上創建一個新的子圖(surface對象)
image_child= image_surface.subsurface(rect1)
rect2 = image_child.get_rect()
#輸出的矩形大小為 100*100
print(rect2)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
    #在屏幕上顯示子圖的區域
    screen.blit(image_child,rect1)
    pygame.display.update()

程序的運行結果如下:

圖1:程序運行結果

從上述運行結果可以看出,我們在圖片上截取瞭一個和 rect1 同樣大小的矩形區域(100*100)。

Rect(矩形區域)對象還提供瞭一些常用方法。如下表所示:

方法 說明
pygame.Rect.copy() 復制矩形
pygame.Rect.move() 移動矩形區域,接受一個列表參數
pygame.Rect.move_ip() 移動矩形(無返回)
pygame.Rect.inflate() 增大或縮小矩形大小
pygame.Rect.clamp() 將矩形移到另一個矩形內
pygame.Rect.union() 返回一個兩個矩形合並後的矩形。
pygame.Rect.fit() 按縱橫比調整矩形的大小或移動矩形。
pygame.Rect.contains() 測試一個矩形是否在另一個矩形內
pygame.Rect.collidepoint()  測試點是否在矩形內
pygame.Rect.colliderect() 測試兩個矩形是否重疊

同時 Rect 對象也提供瞭一些關於矩形大小的常用的屬性,如下所示:

x,y  表示矩形距離 x、y 軸的距離
top, left, bottom, right #在坐標系內描述矩形的大小
topleft, bottomleft, topright, bottomright #返回一個描述矩形大小的元組
midtop, midleft, midbottom, midright #返回一個描述矩形大小的元組
center, centerx, centery #(centerx,centery)表示矩形中央坐標(x,y)的值
size, width, height
w,h  #用於描述矩形的width、height

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

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))。

到此這篇關於Pygame Rect區域位置的使用(圖文)的文章就介紹到這瞭,更多相關Pygame Rect區域位置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: