中文編程pygame游戲教程5_檢測(cè)碰撞

區(qū)塊和點(diǎn)的碰撞
區(qū)塊.碰撞點(diǎn)檢測(cè)(點(diǎn)位置)如果點(diǎn)與區(qū)塊重疊(碰撞),則該函數(shù)返回 True。
我們利用這個(gè)功能做一個(gè)用鼠標(biāo)拖動(dòng)矩形的實(shí)例. 使用該方法以檢查鼠標(biāo)單擊是否發(fā)生在區(qū)塊內(nèi)。 如果是這種情況,我們通過(guò)鼠標(biāo)拖動(dòng)矩形.
變量移動(dòng)中是在鼠標(biāo)按鈕在區(qū)塊內(nèi)按下時(shí)設(shè)置的。 在按鈕鼠標(biāo)松開(kāi)之前,它保持 True。區(qū)塊僅在鼠標(biāo)單擊區(qū)塊時(shí)移動(dòng) 。當(dāng)區(qū)塊移動(dòng)時(shí),我們添加一個(gè)藍(lán)色輪廓。

區(qū)塊與多個(gè)點(diǎn)碰撞
與多個(gè)點(diǎn)碰撞, 可以使用點(diǎn)列表循環(huán)檢查. 在下面的程序中,我們創(chuàng)建 100 個(gè)隨機(jī)點(diǎn), 如果它們落在矩形內(nèi),將它們涂成紅色,矩形外則涂成藍(lán)色。

每次按下 R 鍵時(shí),都會(huì)創(chuàng)建 100 個(gè)新的隨機(jī)點(diǎn)。
區(qū)塊與區(qū)塊的碰撞
區(qū)塊.碰撞區(qū)塊檢測(cè)(區(qū)塊)方法檢查一個(gè)區(qū)塊是否與另一個(gè)區(qū)塊沖突。 在下面的程序中,我們創(chuàng)建 50 個(gè)隨機(jī)矩形,如果它們?cè)诰G色矩形內(nèi)部, 就將它們著色為紅色.

每次按下 R 鍵時(shí),都會(huì)創(chuàng)建 50 個(gè)新的隨機(jī)矩形。
多個(gè)區(qū)塊之間的碰撞
區(qū)塊.碰撞區(qū)塊檢測(cè)(區(qū)塊)方法檢查一個(gè)區(qū)塊是否與另一個(gè)區(qū)塊沖突。 如果我們想知道是否有任何兩個(gè)重疊的區(qū)塊, 然后我們必須將每個(gè)區(qū)塊相互比較。這需要進(jìn)行兩次的嵌套循環(huán), 讓每個(gè)區(qū)塊逐個(gè)與其他區(qū)塊一一比較。(這個(gè)寫(xiě)法有些復(fù)雜, 我們之后會(huì)使用精靈組模塊的碰撞方法, 能大大簡(jiǎn)化代碼)

運(yùn)行下面代碼, 產(chǎn)生30個(gè)隨機(jī)矩形, 如果某個(gè)矩形與其他矩形有重疊, 就會(huì)呈現(xiàn)紅色, 獨(dú)立的矩形會(huì)呈現(xiàn)藍(lán)色. 每個(gè)矩形上面還顯示了它們的編號(hào).
每次按下 R 鍵時(shí),都會(huì)創(chuàng)建 30 個(gè)新的隨機(jī)矩形。