Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 每次调用对象时都需要更改对象中的dicts值_Python_Pygame - Fatal编程技术网

Python 每次调用对象时都需要更改对象中的dicts值

Python 每次调用对象时都需要更改对象中的dicts值,python,pygame,Python,Pygame,我正在用python和pygame制作一个RPG。我有一个item类,它返回一个dict,其中包含基于随机项目编号的各种项目属性。我遇到的问题是,当我多次调用该项时,相同的项会生成,而我希望生成不同的项 代码: 当它被调用时: for row, tiles in enumerate(self.map.data): for col, tiles in enumerate(tiles): if tiles == '\'':

我正在用python和pygame制作一个RPG。我有一个item类,它返回一个dict,其中包含基于随机项目编号的各种项目属性。我遇到的问题是,当我多次调用该项时,相同的项会生成,而我希望生成不同的项

代码:

当它被调用时:

    for row, tiles in enumerate(self.map.data):
        for col, tiles in enumerate(tiles):
             if tiles == '\'':
                Item(game=self, type='Weapon', x=col, y=row)
                for item in self.itemSprites:
                    item.set_attributes()

还不能评论,所以我写了一个答案

这里有几点评论:

首先,在第二个代码块中,第二个for循环中,不要再次调用变量tile,它会干扰第一个for循环。我不明白为什么每次创建新项目时都要设置_属性。应该是这样的:

第二,你能发布几行“项目列表”和你的“SpriteBase”类吗

显然,每个项目都应该是不同的,因为每次设置属性时都会调用randint,所以很可能在查看game.itemSprite列表时实例化同一个对象


希望有帮助。

无法理解此问题。您是说当您调用
set_attributes()
时,项目值没有改变?当创建多个项目时,值没有改变。我希望每次创建项实例时都更改这些值。好的,您在哪里创建多个项?你能在你的代码中添加这个吗?项目列表是这样设置的:
item#| ItemName |稀有性|耐久性|损坏|类型| SplashText
现在我看了一下,我实际上并没有使用多少sprite基类。它应该是(pg.sprite.sprite)是的,使用sprite类,因为这是您以后使用的构造函数。在调用构造函数后尝试添加组,它看起来像:
pg.sprite.sprite.\uuuu init\uuuu(self);self.add(self.groups)
    for row, tiles in enumerate(self.map.data):
        for col, tiles in enumerate(tiles):
             if tiles == '\'':
                Item(game=self, type='Weapon', x=col, y=row)
                for item in self.itemSprites:
                    item.set_attributes()
for row, tiles in enumerate(self.map.data):
    for col, current in enumerate(tiles):
         if current == '\'':
             Item(game=self, type='Weapon', x=col, y=row)
for item in self.itemSprites:
    item.set_attributes()