我目前正在尝试使用pygame,我开发了一个小型的太空射击游戏,现在我想处理一些奖励。
目前我有一个抽象类Bonus,从中派生出所有当前实现的奖励:一个“健康奖励”,可以给玩家回复一些生命值,一个“死亡奖励”,可以将玩家的生命值降至1点。
在我的游戏循环中,大致的操作如下:
def testCollisionBonusBolt():
#bolts are sprites fired by the player that allow him to get the bonuses
collisions = pygame.sprite.groupcollide(bonusesGroup, boltsGroup, True, True)
for col in collisions:
player.bonuses.append(col)
当我告诉玩家使用奖励时,紧接着要做的是...
class Player:
...
def useBonuses(self):
for bonus in self.bonuses:
bonus.use(self)
到目前为止,一切都还好,但我想添加一个“炸弹奖励”,当玩家射击时,它会爆炸并杀死周围的敌人。
这个“奖励”实现了我的抽象类Bonus的“use(target)”方法,就像其他奖励一样,但我觉得将这样的奖励添加到玩家的奖励清单中有点不妥,因为它们之间应该没有关系!
奖励背后的概念是“某物对某物做某事”,以前的目标是我的玩家类,但现在不明确了......当然,我可以在检测到哪些奖励被射击后调用player.useBonuses() ,但在阅读了许多关于鸭子类型及其如何成为Python风格的讨论之后,我在思考如何处理我的奖励问题?
感谢您看到这里,希望你们能帮我解决问题!
问候