我目前在我的游戏设计中面临一个设计问题,并不可怕,但它让我很困扰,所以我想问问其他人的意见:-)
我目前正在试验 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()拍摄我可以测试类型(使用 isinstance),例如奖金,但在我读过所有关于鸭子打字的讨论之后,为什么它是 pythonic 方式我想知道如何管理我的奖金问题?
感谢您阅读本文,希望你们能帮助我!
问候