中文编程pygame游戏教程4_区块定位

区块(Rect)是图形编程中非常有用的对象。 它在 Pygame 中有自己的类区块类
,能够存储和操作矩形区域的位置信息。 可以通过提供以下内容来创建对象:
左、顶、宽、高4个参数
位置和大小
具有 rect 属性的对象
新建一个区块对象可以使用上面的任一个写法. 对于表层对象, 可以直接用获取区块
的方法获取默认的位置信息(默认坐标是0,0)
例如, 第2课移动的小球的区块用下面的代码获取区块对象不需要新建, 利用区块对象可以方便的定位小球的位置到屏幕的中心.
虚拟属性
Rect 对象有几个可以使用的虚拟属性用来移动和对齐区块。 分配给这些属性只是移动区块的位置而不更改其大小:
x, y
顶(top), 左(left), 底(bottom), 右(right)
顶左(topleft), 底左(bottomleft), 顶右(topright), 底右(bottomright)
中顶(midtop), 中左(midleft), 中底(midbottom), 中右(midright)
中心(center), 中心x(centerx), 中心y(centery)
下面的属性的分配通过保持区块的左上角位置来更改区块的大小。
尺寸(size), 宽度(width), 高度(height)

以下程序准备绘制一个矩形, 将其位置和大小新建一个区块对象, 并将这些虚拟属性打印到控制台:
标记点
区块Rect 类定义 4 个角点、4 个中点和 1 个中心点。
下面的代码绘制一个矩形并标记这些点:

水平和垂直对齐
在下面的示例中,我们使用键盘的按键将矩形水平对齐:
按键L - 左
按键C - 中心
按键R - 右
和其他 3 个键来垂直对齐矩形:
按键T - 顶部
按键M - 中
按键B - 底部
注意把输入法设为英文按键才能起作用.
使用按键移动区块
区块对象有两个移动方法: 移动(x,y)
会返回一个新的区块对象, 移动_ip(x,y)
会刷新区块的位置信息, 没有返回数据.下面的代码都会让矩形向右移动100个像素(第二个参数0代码中y轴方向上保持不变):
矩形区块 = g.区块类(0, 0, 200, 80) # 默认在屏幕左上角矩形区块=矩形区块.移动(100,0) # 现在会右移100像素# 矩形区块.移动_ip(100,0) # 这一行代码与上面作用相同# 下面的代码应该在循环中, 屏幕刷新之前g.绘图.矩形(屏幕, 'blue', 矩形区块, 4)
接下来的我们使用键盘的上下左右按键移动矩形, 上一个对齐矩形例子用了很多if语句导致代码过长, 这一次我们使用字典简化一下, 把上下左右按键对应的移动距离保存到字典中. 对于每个方向,移动为 5 个像素:

下面是完整代码, 可以看到使用这个方法大大简化了代码量:
运行上面代码, 按键上下左右可以移动矩形的位置.
缩放矩形
与移动方法类似, 缩放(x,y)
和缩放_ip(x,y)
可以按矢量增大或缩小区块对象。 以下程序使用 4 个箭头键来更改矩形的大小。 蓝色细矩形是原始矩形,红色粗矩形是更改的矩形。为了便于观察, 我们利用区块的中心
属性将矩形放在屏幕中心.

裁剪和联合
区块0.裁剪(区块1)
该方法返回一个新区块,它是两个区块的交集。区块0.联合(区块1)
该方法返回一个新矩形,它是两个区块的并集。
下面的程序显示了红色和蓝色轮廓的两个矩形。 绿色矩形是交集区域。 黄色矩形是两个矩形的并集。按上下左右移动红色矩形可以看到交集和并集区域的变化.
