1 碰撞檢測
在顯示了玩家汽車和“敵人”汽車之后,接下來就要實現玩家與“敵人”的碰撞檢測了。
代碼如圖1所示。
圖1 碰撞檢測代碼
第72行代碼通過pygame.sprite.spritecollideany()函數判斷P1和enemies是否發生了碰撞,如果發生碰撞,該函數的返回值是True;第73行代碼通過pygame.mixer.Sound()函數導入音頻文件“crash.wav”,該音頻文件是汽車碰撞聲,之后通過play()函數播放該音頻;第74-77行代碼的作用是顯示“Game Over”界面,第74行代碼先暫停1秒鐘,然后第75行代碼將屏幕背景設置為紅色,第76行代碼顯示“Game Over”信息,game_over是創建的新Surface,用于顯示“Game Over”,代碼如圖2所示,第77行代碼更新窗口顯示“Game Over”界面。
圖2 創建“Game Over”新Surface的代碼
圖1第78-79行代碼通過for循環遍歷all_sprites精靈組中的所有精靈,并通過kill()函數刪除這些精靈。第80-82行代碼退出pygame和游戲。
相關鏈接1 ?pygame.sprite.spritecollideany()函數實現碰撞檢測的資料,請參考
《《Python游戲編程入門》注-第8章4》
相關鏈接2 ?pygame.mixer模塊播放音頻的資料,請參考
《Pygame中播放音頻的方法》
2 設置游戲幀數
可以通過設置游戲幀數來調整“敵人”汽車的速度。
2.1 定義游戲幀數
定義游戲幀數,并且創建pygame.time.Clock類的實例,代碼如圖3所示。
圖3 定義游戲幀數及創建pygame.time.Clock類的實例的代碼
其中,變量FPS即為游戲幀數,可以通過修改該變量的值來調整“敵人”汽車的速度;FramePerSec是pygame.time.Clock類的實例。
2.2 設置游戲幀數
設置游戲幀數的代碼如圖4所示。
圖4 設置游戲幀數的代碼
注意1 圖3所示代碼在while True循環之外,圖4所示設置游戲幀數的代碼在while True循環之內。
相關鏈接3 游戲幀數的相關資料,請參考
《Pygame中Sprite類的使用6-2》