Rect類
Rect是pygame中很重要的一個(gè)類,矩形、橢圓以及圓弧的繪制均需要通過Rect來指定,其構(gòu)造函數(shù)要求輸入四個(gè)參數(shù),分別是(left, top, width, height),即左、上坐標(biāo)、寬度以及高度。
下面基于Rect對(duì)象來創(chuàng)建一個(gè)矩形,并通過ijkl四個(gè)鍵對(duì)其挪動(dòng),效果如下
代碼為
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是一個(gè)Rect對(duì)象,初始化時(shí),其左上角的坐標(biāo)為 ( 10 , 10 ) (10,10) (10,10),且邊長為100。在主循環(huán)中,每次循環(huán),都會(huì)重新繪制一個(gè)矩形,這個(gè)矩形以player為模板,且四邊寬度為40,故而繪制結(jié)果顯示出一個(gè)鏤空的矩形。
方法
Rect中提供了如下方法
方法 | 說明 |
---|---|
copy() | 復(fù)制矩形 |
move() | 移動(dòng)矩形區(qū)域,接受一個(gè)列表參數(shù) |
move_ip() | 移動(dòng)矩形(無返回) |
inflate() | 增大或縮小矩形大小 |
clamp() | 將矩形移到另一個(gè)矩形內(nèi) |
union() | 返回一個(gè)兩個(gè)矩形合并后的矩形。 |
fit() | 按縱橫比調(diào)整矩形的大小或移動(dòng)矩形。 |
contains() | 測試一個(gè)矩形是否在另一個(gè)矩形內(nèi) |
collidepoint() | 測試點(diǎn)是否在矩形內(nèi) |
colliderect() | 測試兩個(gè)矩形是否重疊 |
下面以u(píng)nion為例,通過動(dòng)畫來展示其運(yùn)算邏輯,
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()
效果為
文章來源:http://www.zghlxwxcb.cn/news/detail-766373.html
其中,綠色矩形為 p 1 p_1 p1?,藍(lán)色矩形為 p 2 p_2 p2?,二者通過asjk四個(gè)按鍵來控制。而union運(yùn)算,相當(dāng)于選取一個(gè)矩形,將二者框起來,并形成一個(gè)新的矩形。文章來源地址http://www.zghlxwxcb.cn/news/detail-766373.html
到了這里,關(guān)于【PyGame】Rect類實(shí)戰(zhàn)演示的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!