random.randrang恒定图像blitting

时间:2013-12-25 20:32:48

标签: python spring pygame

我有自己创建的数据结构,称为characters

此数据结构具有以下方法

addCharacters(self, Character, number)

这允许用户向屏幕添加任意数量的字符。在此方法中,__init__构造函数中初始化的数组为append以添加Character对象。

我有一个班级screen,在这个班级我有以下方法

addCharacter(self, Character, x, y)

这会在屏幕上绘制角色,如下所示:

self.screen.blit(character.image,(x,y)

我在运行代码的主类中调用这些方法。创建表示游戏运行的while循环。在此while循环中,必须必须绘制对象,因此screen.blit必须在while循环中发生。

以下是问题:当我在while循环外调用方法myarray.addCharacter(character,4)时,

for characters in charactersList:
     screen.addCharacter(character, random.randrange(0, screen.width), random.randrange(0,   world.screen))

图像不规则在不同位置的屏幕上显示。我理解这是因为 for循环中的while 循环。我不能在while循环之外添加字符,因为它不会绘制到屏幕上。

有没有办法可以在不同的位置设置此数据结构中每个对象的位置,而不进行常量blitting?

提前致谢!

1 个答案:

答案 0 :(得分:1)

不确定我是否正确理解了这个问题。据我了解,你想在屏幕的随机位置绘制你的“角色”,但这些位置必须在外部{{的每次迭代中保持相同 1}}循环。我看到两种可能性:

  1. 如果可能,请将位置属性whilex添加到y类本身,或
  2. 使用字典将Character个对象映射到Character位置。
  3. 我不知道那个(x, y)类是什么(你自己的类,还是某个库?),所以第一个可能是不可能的。对于第二个approch,Character个对象需要hashable。如果这也不可能,您可以创建一个可以打包的包装类,或者只使用对象的id进行映射。

    方法2的代码可能看起来像这样:

    Character