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》