我正在创建一些Starcraft映射工具。《星际争霸》地图包含许多内容,例如图块地图,单位位置或战争迷雾层。单位展示位置由units []表示,每个条目的属性为“命中率”(0〜100%)。战争迷雾由fog [x,y] [player]表示。(布尔数组)
现在,假设我要将每个单位的生命值设置为50%。我只会写
for obj in units:
obj.hitpoint = 50
但是,相反,我不能只是这样写吗?
units[:].hitpoint = 50
单位可能是另一个变量的查看者,但接口应如上所述。
同样,一个人应该能够将其转换为
for y in range(height):
for x in range(width):
for player in range(8):
fog[x, y][player] = False
fog[x, y][0] = True
到
fog[:, :][:] = False
fog[:, :][0] = True
(高度,宽度是战争层的雾度。)
或者像在numpy 2d数组副本中一样,这应该是可能的。
fog[3:7, 4:8][1:3] = fog[5:9, 1:6][2:4]
有没有让我这样做的图书馆?
PS)我是python的新手。(但是我可以在适当的时候学习。)主题肯定是误导的,但是我想不到更好的主题。
因此,我不确定现有的库,但是创建一个矢量类来做到这一点并不难。
class Vector(object):
def __init__(self, arguments):
object.__setattr__(self, 'contents', list(arguments))
def __iter__(self):
return iter(self.contents)
def __getitem__(self, key):
return self.contents[key]
def __setitem__(self, key, value):
self.contents[key] = value
def __delitem__(self, key):
del self.contents[key]
def __setattr__(self, key, value):
for node in self.contents:
setattr(node, key, value)
您可以将其用作:
Vector(units).hitpoint = 50
# This also still works...
for unit in Vector(units):
unit.hitpoint = 50
# This also still works...
Vector(unit)[2].hitpoint = 50
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句