当前位置: 首页 > 编程笔记 >

python飞机大战pygame碰撞检测实现方法分析

商飞龙
2023-03-14
本文向大家介绍python飞机大战pygame碰撞检测实现方法分析,包括了python飞机大战pygame碰撞检测实现方法分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了python飞机大战pygame碰撞检测实现方法。分享给大家供大家参考,具体如下:

  • 了解碰撞检测方法
  • 碰撞实现

01. 了解碰撞检测方法

  • pygame 提供了 两个非常方便 的方法可以实现碰撞检测:

pygame.sprite.groupcollide()

  • 两个精灵组 中 所有的精灵 的碰撞检测
groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict
  • 如果将 dokill 设置为 True,则 发生碰撞的精灵将被自动移除
  • collided 参数是用于 计算碰撞的回调函数
    • 如果没有指定,则每个精灵必须有一个 rect 属性

pygame.sprite.spritecollide()

  • 判断 某个精灵 和 指定精灵组 中的精灵的碰撞
spritecollide(sprite, group, dokill, collided = None) -> Sprite_list
  • 如果将 dokill 设置为 True,则 指定精灵组 中 发生碰撞的精灵将被自动移除
  • collided 参数是用于 计算碰撞的回调函数
    • 如果没有指定,则每个精灵必须有一个 rect 属性
  • 返回 精灵组 中跟 精灵 发生碰撞的 精灵列表

02. 碰撞实现

def __check_collide(self):

  # 1. 子弹摧毁敌机
  pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)
  
  # 2. 敌机撞毁英雄
  enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)
  
  # 判断列表时候有内容
  if len(enemies) > 0:
  
    # 让英雄牺牲
    self.hero.kill()
    
    # 结束游戏
    PlaneGame.__game_over()

更多关于Python相关内容可查看本站专题:《Python游戏开发技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

 类似资料:
  • 所以我试图用Python和Pyplay创建一个益智平台游戏,但是我遇到了一点麻烦。当我为主要角色使用单点图像,而不是矩形图像时,如何制作碰撞检测器?我知道直角图像有左、右、顶部和底部像素功能(这对冲突检测非常有用),但是对于单片图像有这样的功能吗?或者我只需要为x和y坐标创建一个变量图像的宽度/高度?我试过用那个 但是catImg一直在通过窗户的尽头。我做错了什么?提前谢谢。

  • 本文向大家介绍python实现飞机大战游戏(pygame版),包括了python实现飞机大战游戏(pygame版)的使用技巧和注意事项,需要的朋友参考一下 简介 使用python实现pygame版的飞机大战游戏; 环境:Windows系统+python3.8.0 游戏规则: 1.点击“PLAY”或者按键“P”开始游戏; 2.敌机根据设置频率从顶部随机位置生成,生成后向下移动; 3.飞船在底部中间生

  • 我已经有一段时间了。我正在尝试用PyGame制作一个游戏,我到达了碰撞段,已经被卡住了一段时间,并且检查了一些线程。 这是我的代码(删除了中间的其他方法和条件语句,但保留了相关部分)。我对这个错误有点困惑,因为我在两个类init中都self.imageRect=self.image.get_rect(),但是我有这个错误。当程序试图在dog类中执行冲突检测部分时,该错误具体为: "属性错误:'Pe

  • 我正在制作我的第一个自由移动(不是瓷砖限制)2d游戏,想知道如何使用冲突检测。我有3种可能的方法在我的脑海中,但不确定什么是最有效的: > 地图上的每个物体都有一个比图像本身更小的纹理(例如,一棵树只有一个更小的纹理代表它的底部),不能碰撞。为此,我会使用第二个不可见的纹理来标记该区域。 每个对象都有一个用于碰撞的矩形或圆形区域。可能每个纹理都需要一个辅助文件,说明碰撞的大小(再次以树为例)。 我

  • 在开始学习相关知识点之前,我们有必要先学习精灵和碰撞检测的含义。 精灵(英文译为 Sprite),其实在一个游戏程序中,精灵本质指的是一张张小尺寸的图片,比如游戏中的各种道具、人物、场景装饰等,它们都可以看做成一张张小的“精灵”图。除此之外,人物的移动也可以看做是一系列小精灵图构成的序列(按帧组成的序列),如下图所示: 图1:动作逐帧分解图 如果将逐帧分解后的动作,按照一定的频率播放,那么就形成了

  • 我正在编写我的第一个Pyplay游戏。我试图进行冲突检测,但有时会奏效- 我尝试使用实际上我使用 这是我的碰撞代码: 我除了当我触摸尖峰,启动功能,但只是有时工作。