Python矢量化库?

用户名

我正在创建一些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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章