Rect类
Rect是pygame中很重要的一个类,矩形、椭圆以及圆弧的绘制均需要通过Rect来指定,其构造函数要求输入四个参数,分别是(left, top, width, height),即左、上坐标、宽度以及高度。
下面基于Rect对象来创建一个矩形,并通过ijkl四个键对其挪动,效果如下
代码为
import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
player = pygame.Rect(10.2, 10, 100, 100)
while True:
if pygame.QUIT in [e.type for e in pygame.event.get()]:
pygame.quit()
break
screen.fill("purple")
pygame.draw.rect(screen, "red", player, 40)
keys = pygame.key.get_pressed()
if keys[pygame.K_j]:
player.y -= 1
if keys[pygame.K_k]:
player.y += 1
if keys[pygame.K_h]:
player.x -= 1
if keys[pygame.K_l]:
player.x += 1
pygame.display.flip()
其中,player是一个Rect对象,初始化时,其左上角的坐标为 ( 10 , 10 ) (10,10) (10,10),且边长为100。在主循环中,每次循环,都会重新绘制一个矩形,这个矩形以player为模板,且四边宽度为40,故而绘制结果显示出一个镂空的矩形。
方法
Rect中提供了如下方法
方法 | 说明 |
---|---|
copy() | 复制矩形 |
move() | 移动矩形区域,接受一个列表参数 |
move_ip() | 移动矩形(无返回) |
inflate() | 增大或缩小矩形大小 |
clamp() | 将矩形移到另一个矩形内 |
union() | 返回一个两个矩形合并后的矩形。 |
fit() | 按纵横比调整矩形的大小或移动矩形。 |
contains() | 测试一个矩形是否在另一个矩形内 |
collidepoint() | 测试点是否在矩形内 |
colliderect() | 测试两个矩形是否重叠 |
下面以union为例,通过动画来展示其运算逻辑,
pygame.init()
screen = pygame.display.set_mode((500,300))
p1 = pygame.Rect(10, 100, 100, 100)
p2 = pygame.Rect(400, 100, 100, 100)
while True:
if pygame.QUIT in [e.type for e in pygame.event.get()]:
pygame.quit()
break
screen.fill("purple")
rect = p1.union(p2)
pygame.draw.rect(screen, "red", rect, 40)
pygame.draw.rect(screen, "green", p1, 10)
pygame.draw.rect(screen, "blue", p2, 10)
keys = pygame.key.get_pressed()
if keys[pygame.K_j]:
p2.x -= 1
if keys[pygame.K_k]:
p2.x += 1
if keys[pygame.K_a]:
p1.x -= 1
if keys[pygame.K_s]:
p1.x += 1
pygame.display.flip()
效果为
文章来源:https://www.toymoban.com/news/detail-766373.html
其中,绿色矩形为 p 1 p_1 p1,蓝色矩形为 p 2 p_2 p2,二者通过asjk四个按键来控制。而union运算,相当于选取一个矩形,将二者框起来,并形成一个新的矩形。文章来源地址https://www.toymoban.com/news/detail-766373.html
到了这里,关于【PyGame】Rect类实战演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!