Python全系列 教程
3567个小节阅读:5931.5k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在游戏开发中,通常把显示图像的对象叫做精灵Spire,精灵需要有两个属性,image要显示的图像,rect图像要显示在屏幕的位置。
在Pygame框架中,使用pygame. sprite模块中的内置函数可以实现碰撞检测。代码如下:
xxxxxxxxxx
11pygame.sprite.collide_rect(first, second) #返回布尔值
pygame.sprite.Sprite是pygame精灵的基类,一般来说,总是需要写一个自己的精灵类继承pygame.sprite.Sprite。让坦克类、子弹类都继承编写的精灵类。
xxxxxxxxxx
51class BaseItem(pygame.sprite.Sprite):
2 def __init__(self):
3 pygame.sprite.Sprite.__init__(self)
4class Tank(BaseItem):
5class Bullet(BaseItem):
在子弹类中增加我方子弹碰撞敌方坦克的方法,如果发生碰撞,修改我方子弹及敌方坦克live属性的状态值。
xxxxxxxxxx
61 #新增我方子弹碰撞敌方坦克的方法
2 def hitEnemyTank(self):
3 for eTank in MainGame.EnemyTank_list:
4 if pygame.sprite.collide_rect(eTank,self):
5 self.live = False
6 eTank.live = False
在我方子弹移动后判断子弹是否与敌方坦克碰撞。
xxxxxxxxxx
121 #将我方子弹加入到窗口中
2 def blitBullet(self):
3 for bullet in MainGame.Bullet_list:
4 #如果子弹还活着,绘制出来,否则,直接从列表中移除该子弹
5 if bullet.live:
6 bullet.displayBullet()
7 # 让子弹移动
8 bullet.bulletMove()
9 # 调用我方子弹与敌方坦克的碰撞方法
10 bullet.hitEnemyTank()
11 else:
12 MainGame.Bullet_list.remove(bullet)