中文編程pygame游戲教程4_區(qū)塊定位

區(qū)塊(Rect)是圖形編程中非常有用的對象。 它在 Pygame 中有自己的類區(qū)塊類
,能夠存儲和操作矩形區(qū)域的位置信息。 可以通過提供以下內(nèi)容來創(chuàng)建對象:
左、頂、寬、高4個參數(shù)
位置和大小
具有 rect 屬性的對象
新建一個區(qū)塊對象可以使用上面的任一個寫法. 對于表層對象, 可以直接用獲取區(qū)塊
的方法獲取默認的位置信息(默認坐標是0,0)
例如, 第2課移動的小球的區(qū)塊用下面的代碼獲取區(qū)塊對象不需要新建, 利用區(qū)塊對象可以方便的定位小球的位置到屏幕的中心.
虛擬屬性
Rect 對象有幾個可以使用的虛擬屬性用來移動和對齊區(qū)塊。 分配給這些屬性只是移動區(qū)塊的位置而不更改其大?。?/p>
x, y
頂(top), 左(left), 底(bottom), 右(right)
頂左(topleft), 底左(bottomleft), 頂右(topright), 底右(bottomright)
中頂(midtop), 中左(midleft), 中底(midbottom), 中右(midright)
中心(center), 中心x(centerx), 中心y(centery)
下面的屬性的分配通過保持區(qū)塊的左上角位置來更改區(qū)塊的大小。
尺寸(size), 寬度(width), 高度(height)

以下程序準備繪制一個矩形, 將其位置和大小新建一個區(qū)塊對象, 并將這些虛擬屬性打印到控制臺:
標記點
區(qū)塊Rect 類定義 4 個角點、4 個中點和 1 個中心點。
下面的代碼繪制一個矩形并標記這些點:

水平和垂直對齊
在下面的示例中,我們使用鍵盤的按鍵將矩形水平對齊:
按鍵L - 左
按鍵C - 中心
按鍵R - 右
和其他 3 個鍵來垂直對齊矩形:
按鍵T - 頂部
按鍵M - 中
按鍵B - 底部
注意把輸入法設(shè)為英文按鍵才能起作用.
使用按鍵移動區(qū)塊
區(qū)塊對象有兩個移動方法:?移動(x,y)
會返回一個新的區(qū)塊對象,?移動_ip(x,y)
會刷新區(qū)塊的位置信息, 沒有返回數(shù)據(jù).下面的代碼都會讓矩形向右移動100個像素(第二個參數(shù)0代碼中y軸方向上保持不變):
矩形區(qū)塊 = g.區(qū)塊類(0, 0, 200, 80) ?# 默認在屏幕左上角矩形區(qū)塊=矩形區(qū)塊.移動(100,0) ?# 現(xiàn)在會右移100像素# 矩形區(qū)塊.移動_ip(100,0) ?# 這一行代碼與上面作用相同# 下面的代碼應(yīng)該在循環(huán)中, 屏幕刷新之前g.繪圖.矩形(屏幕, 'blue', 矩形區(qū)塊, 4)
接下來的我們使用鍵盤的上下左右按鍵移動矩形, 上一個對齊矩形例子用了很多if語句導致代碼過長, 這一次我們使用字典簡化一下, 把上下左右按鍵對應(yīng)的移動距離保存到字典中. 對于每個方向,移動為 5 個像素:

下面是完整代碼, 可以看到使用這個方法大大簡化了代碼量:
運行上面代碼, 按鍵上下左右可以移動矩形的位置.
縮放矩形
與移動方法類似,?縮放(x,y)
和縮放_ip(x,y)
可以按矢量增大或縮小區(qū)塊對象。 以下程序使用 4 個箭頭鍵來更改矩形的大小。 藍色細矩形是原始矩形,紅色粗矩形是更改的矩形。為了便于觀察, 我們利用區(qū)塊的中心
屬性將矩形放在屏幕中心.

裁剪和聯(lián)合
區(qū)塊0.裁剪(區(qū)塊1)
該方法返回一個新區(qū)塊,它是兩個區(qū)塊的交集。區(qū)塊0.聯(lián)合(區(qū)塊1)
該方法返回一個新矩形,它是兩個區(qū)塊的并集。
下面的程序顯示了紅色和藍色輪廓的兩個矩形。 綠色矩形是交集區(qū)域。 黃色矩形是兩個矩形的并集。按上下左右移動紅色矩形可以看到交集和并集區(qū)域的變化.
