Python random.randrang恒定图像闪烁
我有一个我自己创建的数据结构,它叫做Python random.randrang恒定图像闪烁,python,spring,pygame,Python,Spring,Pygame,我有一个我自己创建的数据结构,它叫做characters 此数据结构具有以下方法 addCharacters(self, Character, number) addCharacter(self, Character, x, y) 这允许用户向屏幕添加尽可能多的字符。在该方法中,在\uuuu init\uuuu构造函数中初始化的数组被追加以添加字符对象 我有一个类屏幕,在这个类中我有以下方法 addCharacters(self, Character, number) addCharact
characters
此数据结构具有以下方法
addCharacters(self, Character, number)
addCharacter(self, Character, x, y)
这允许用户向屏幕添加尽可能多的字符。在该方法中,在\uuuu init\uuuu
构造函数中初始化的数组被追加
以添加字符
对象
我有一个类屏幕
,在这个类中我有以下方法
addCharacters(self, Character, number)
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
循环的每次迭代中,这些位置必须保持不变。我认为这样做有两种可能性:
如果可能,将位置属性x
和y
添加到字符
类本身,或者
使用字典将字符
对象映射到它们的(x,y)
位置
我不知道字符类是什么(您自己的类,或者来自某个库?),所以第一个可能不可能。对于第二种方法,需要创建字符
对象。如果这也不可能,您可以创建一个可散列的包装器类,或者只使用对象的类进行映射
方法2的代码可能看起来有点像这样:
# create dictionary, defaulting to new random positions
randpos = lambda: (random.randrange(0, width), random.randrange(0, height))
d = collections.defaultdict(randpos)
for i in range(10): # corresponds to your outer 'while' loop
print "outer loop", i
for k in range(5): # your 'for characters...' loop
x, y = d[k] # get x, y from dict, default to random position
print x, y # use position
我想要随机位置的所有字符,你能给我举个例子吗?顺便问一下,你的数据结构真的叫做字符吗?如果是这样,可能还有另一个问题:在您的for
循环之后,该名称将绑定到characterList
iterable中的最后一项,并且该类将不再可用。您解释得很好,感谢我这么做:)