我正在制作基于文本的地下城爬虫类游戏。在这个游戏中我有一个敌人类和一个玩家类。如果我实例化几个敌人并将它们与我的玩家一起放在网格结构中,我如何检测玩家遇到的敌人类的哪个实例,以便我可以将实例作为参数传递给各种函数。例如:
class Enemy:
def __init__(self, name, x, y):
self.name = name
self.x = x
self.y = y
e = Enemy('goblin', 0, 0)
e1 = Enemy('troll',0, 1)
enemies = (e, e1)
grid = [[' '] * 10 for i in range(10)]
grid[e.x][e.y] = e.name
grid[e1.x][e1.y] = e1.name
someFucntion(player, enemy)
正如你所看到的,对于此时拥有敌人实例的函数,我必须手动传入实例。但这意味着如果elif语句很好地确定它是哪个实例。考虑到我希望有20 +敌人的实例,这显然效率不高或者不好。
那么是否有一个方法或函数可以让我检测/获取要传递的实例?提前感谢您的时间和专业知识。希望这个问题不是主题或太模糊。
答案 0 :(得分:1)
class Player:
def __init__(self, name, x, y):
self.name = name
self.x = x
self.y = y
class Enemy:
def __init__(self, name, x, y):
self.name = name
self.x = x
self.y = y
def combat(player, enemy):
print('%s dies.' % (enemy.name))
p = Player('tom', 0, 1)
e = Enemy('goblin', 0, 0)
e1 = Enemy('troll', 0, 1)
currentEnemy = ()
enemies = (e, e1)
grid = [[' '] * 10 for i in range(10)]
grid[e.x][e.y] = e.name
grid[e1.x][e1.y] = e1.name
for i in enemies:
if i.x == p.x and i.y == p.y:
currentEnemy = i
combat(p, currentEnemy)
这让我得到了我预期的输出,即'troll die'
希望这对有这个问题的其他人有帮助。