Pygame中Sprite的使用方法示例詳解
3 碰撞檢測
藍(lán)色方塊會(huì)隨著鼠標(biāo)移動(dòng),當(dāng)碰到綠色方塊時(shí),則當(dāng)前分?jǐn)?shù)加1,當(dāng)碰到紅色方塊時(shí),當(dāng)前分?jǐn)?shù)減1。因?yàn)橐S時(shí)進(jìn)行碰撞檢測,因此需要在while True循環(huán)中實(shí)現(xiàn)以下功能。
3.1 藍(lán)色方塊隨鼠標(biāo)移動(dòng)
將藍(lán)色方塊的位置設(shè)置為鼠標(biāo)的位置,即可以實(shí)現(xiàn)藍(lán)色方塊隨鼠標(biāo)移動(dòng),代碼如下所示。
pos = pygame.mouse.get_pos() player.rect.x = pos[0] player.rect.y = pos[1]
其中,通過pygame.mouse.get_pos()獲取鼠標(biāo)的當(dāng)前位置,并將鼠標(biāo)的橫坐標(biāo)pos[0]賦值給藍(lán)色方塊的x坐標(biāo)player.rect.x,鼠標(biāo)的縱坐標(biāo)pos[1]賦值給藍(lán)色方塊的y坐標(biāo)player.rect.y。
3.2 檢測藍(lán)色方塊是否碰撞到綠色方塊
3.2.1 pygame.sprite.spritecollide()方法
通過pygame.sprite.spritecollide()方法來實(shí)現(xiàn)碰撞檢測。該方法的使用格式為
spritecollide(sprite, group, dokill, collided=None)
其中,第一個(gè)參數(shù)sprite表示碰撞的Sprite實(shí)例;第二個(gè)參數(shù)是一個(gè)Group實(shí)例,在該Group中包含了多個(gè)Sprite實(shí)例,也就是說,判斷第一個(gè)參數(shù)sprite與第二個(gè)參數(shù)group中包含的多個(gè)Sprite實(shí)例是否進(jìn)行了碰撞;dokill是一個(gè)布爾類型的參數(shù),該參數(shù)是True時(shí)表示將發(fā)生碰撞的實(shí)例從第二個(gè)參數(shù)group中刪除,F(xiàn)alse表示不刪除;第四個(gè)餐宿collided是一個(gè)回調(diào)方法,當(dāng)兩個(gè)Sprite實(shí)例發(fā)生碰撞時(shí),調(diào)用該方法,默認(rèn)是None。spritecollide()方法的返回值是一個(gè)列表,包含了在第二個(gè)參數(shù)group中與第一個(gè)參數(shù)spirte發(fā)生碰撞的Sprite實(shí)例。
3.2.2 相關(guān)代碼
通過pygame.sprite.spritecollide()方法來判斷藍(lán)色方塊是否與綠色方塊碰撞的代碼如下所示。
blocks_hit_list = \ pygame.sprite.spritecollide(player, block_list, True) for block in blocks_hit_list: score += 1 print('當(dāng)前分?jǐn)?shù)為:'+str(score))
其中,player是表示鼠標(biāo)的藍(lán)色方塊;block_list包含了所有綠色方塊的Group實(shí)例,因?yàn)樵谂鲎舶l(fā)生后,被碰撞的綠色方塊要消失,因此,把spritecollide()方法的第三個(gè)參數(shù)設(shè)置為True。發(fā)生碰撞的方塊就保存在blocks_hit_list中,最后對分?jǐn)?shù)score進(jìn)行加1處理,并顯示。
3.3 檢測藍(lán)色方塊是否碰撞到紅色方塊
檢測藍(lán)色方塊是否碰撞到紅色方塊的原理與碰撞綠色方塊類似,代碼如下所示。
blocks_hit_list = \ pygame.sprite.spritecollide(player, block_bad_list, True) for block in blocks_hit_list: score -= 1 print('當(dāng)前分?jǐn)?shù)為:'+str(score))
其中,block_bad_list是保存紅色方塊的group。當(dāng)發(fā)生碰撞時(shí),對分?jǐn)?shù)score進(jìn)行減1處理,并顯示。
到此這篇關(guān)于Pygame中Sprite的使用方法的文章就介紹到這了,更多相關(guān)Pygame Sprite使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果的問題
這篇文章主要介紹了Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果,本代碼屬于半自動(dòng)化導(dǎo)出,考慮到開發(fā)效率等因素,有兩處在首次導(dǎo)出時(shí)需要手動(dòng)操作,具體實(shí)現(xiàn)過程跟隨小編一起看看吧2022-01-01Python字典生成式、集合生成式、生成器用法實(shí)例分析
這篇文章主要介紹了Python字典生成式、集合生成式、生成器用法,結(jié)合實(shí)例形式分析了Python字典生成式、集合生成式、生成器相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-01-01Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄
這篇文章主要介紹了Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02淺談python中常用的8種經(jīng)典數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了python中常用的8種經(jīng)典數(shù)據(jù)結(jié)構(gòu),包括原生數(shù)據(jù)結(jié)構(gòu),NumPy包中的數(shù)據(jù)結(jié)構(gòu),以及Pandas包中的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下2023-03-03單鏈表反轉(zhuǎn)python實(shí)現(xiàn)代碼示例
這篇文章主要介紹了單鏈表反轉(zhuǎn)python實(shí)現(xiàn),分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02