回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在做一个游戏,我需要随机生成一个列表类。我使用一个自制的函数<code>randList</code>来实现这一点。该函数的代码如下所示:</p>
<pre><code>def randList(options, num): #RANDOMLY SELECTS NUM ITEMS FROM LIST OPTIONS
returnVal = [] #CREATE A LIST THAT IT RETURNS
for i in range(num - 1): #FOR DESIRED NUMBER OF RETURN ITEMS
val = r.choice(options) #RANDOMLY SELECT ITEM FROM OPTIONS
returnVal.append(val) #ADD THAT TO RETURNVAL
options.remove(val) #REMOVE IT FROM OPTIONS.
return returnVal #RETURN GENERATED LIST
</code></pre>
<p>我用它在一个房间里随机生成怪物和物品,比如:</p>
<pre><code>class roomParent: #ROOM CHARACTER FINDS
def __init__(self, entities, floor): #INIT WITH ENEMIES IN ROOM, ITEMS ON FLOOR
self.entities = entities #ENEMIES THERE ARE
self.floor = floor #ON FLOOR THERE IS
def generate(self):
global enemiesBeat
if enemiesBeat >= 500:
self.entities = [dragon]
else:
self.entities = randList([goblin, dwarf, slime, naga, troll, beholder], 1)
self.floor = randList([scrap, scrap, scrap, fireJar, ambrosia, sword, spearhead, armor, potion, slimeball], r.randint(0, 3))
room = roomParent([], [])
</code></pre>
<p>正如您所知,<code>goblin</code>、<code>dwarf</code>、<code>slimeball</code>等都是在代码前面定义的。我认为他们与这个问题无关。我稍后生成房间,如下所示:</p>
<pre><code>def main():
room.generate()
print("Enemies: " + str(room.entities))
main()
</code></pre>
<p>我希望它打印出一个列表,其中有两个随机的怪物来自<code>room.generate()</code>,但它总是打印<code>Enemies: []</code>。代码中没有任何错误,在尝试了10分钟的故障排除之后,我决定向web咨询,结果没有任何结果。提前感谢您的帮助。你知道吗</p>