有一个基类warrior和其五个派生类lion wolf ninja icrman dragon,每次都会产生其中的一个武士,并且每次产生的时候都会有位置和阵营,如何保存武士的位置和阵营信息并且能够访问位置和阵营信息以及武士的成员,并且能遍历每个位置找到对应的武士
时间: 2024-02-17 11:00:11 浏览: 55
你可以使用一个二维数组来保存每个位置上的武士。数组的行数和列数代表战场的大小,而数组中的每个元素则代表该位置上的武士。你可以将每个武士的阵营信息保存在其对应的类中,比如在warrior类中增加一个camp属性用于表示阵营。这样,每个武士对象就可以保存自己的位置和阵营信息了。
为了能够遍历每个位置找到对应的武士,你可以实现一个方法,接收一个位置参数,返回该位置上的武士对象。在方法中,你只需要根据传入的位置参数在二维数组中找到对应的元素,即可获取该位置上的武士对象。
示例代码:
```python
class Warrior:
def __init__(self, name, camp):
self.name = name
self.camp = camp
class Lion(Warrior):
pass
class Wolf(Warrior):
pass
class Ninja(Warrior):
pass
class Iceman(Warrior):
pass
class Dragon(Warrior):
pass
class BattleField:
def __init__(self, n, m):
self.n = n
self.m = m
self.field = [[None for j in range(m)] for i in range(n)]
def get_warrior(self, x, y):
return self.field[x][y]
def set_warrior(self, x, y, warrior):
self.field[x][y] = warrior
# 初始化战场
battle_field = BattleField(10, 10)
# 在位置(0, 0)生成一个Lion
lion = Lion("lion_1", "red")
battle_field.set_warrior(0, 0, lion)
# 获取位置(0, 0)上的武士
warrior = battle_field.get_warrior(0, 0)
print(warrior.name) # 输出 "lion_1"
print(warrior.camp) # 输出 "red"
```
阅读全文