【发布时间】:2009-07-06 05:18:18
【问题描述】:
我目前在我的游戏设计中遇到了一个设计问题,不是很糟糕,但它让我很困扰,所以我想问问其他人的意见:-)
我目前正在试验 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 方式我我想知道如何管理我的奖金问题?
感谢您阅读本文,希望你们能帮助我!
问候
【问题讨论】:
-
炸弹在被发射螺栓时爆炸,它不会在玩家区域周围爆炸,它可以在屏幕上的任何位置,并且绝对与当前玩家位置无关。很抱歉让这个不清楚。
标签: python pygame duck-typing