欢迎光临散文网 会员登陆 & 注册

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

2023-08-23 09:56 作者:52中文编程  | 我要投稿

区块(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)该方法返回一个新矩形,它是两个区块的并集。

下面的程序显示了红色和蓝色轮廓的两个矩形。 绿色矩形是交集区域。 黄色矩形是两个矩形的并集。按上下左右移动红色矩形可以看到交集和并集区域的变化.


中文编程pygame游戏教程4_区块定位的评论 (共 条)

分享到微博请遵守国家法律