所以,我正在制作一个有点像矮人要塞的小游戏......但现在我正在努力让屏幕随机变化。我有 t 被分配给一个字符串,而 g 被分配给另一个。当我预定义它时它工作正常,但是当我改变它时......
这是它应该做的,并且通常输出(不改变动态改变任何东西):
# # # # # #
# ^ # # ^ #
# # ^ # # #
# # # # # #
# # # # # #
# # # ^ # #
(它以颜色输出)
但是当我尝试动态更改数组时,它搞砸了。这是代码:
import os
import time
import random
clear = lambda: os.system('clear')
g = '\033[32m' + '# '
t = '\033[31m' + '^ '
l = [g, g, g, g, g, g,
g, t, g, g, t, g,
g, g, t, g, g, g,
g, g, g, g, g, g,
g, g, g, g, g, g,
g, g, g, t, g, g]
def level():
i = 0
while i < 50:
print l[0] + l[1] + l[2] + l[3] + l[4] + l[5]
print l[6] + l[7] + l[8] + l[9] + l[10] + l[11]
print l[12] + l[13] + l[14] + l[15] + l[16] + l[17]
print l[18] + l[19] + l[20] + l[21] + l[22] + l[23]
print l[24] + l[25] + l[26] + l[27] + l[28] + l[29]
print l[30] + l[31] + l[32] + l[33] + l[34] + l[35]
time.sleep(0.2)
i += 1
for b in l:
ch = round(random.random())
if ch:
l[b] = t
else:
l[b] = g
clear()
level()
这是错误:
Traceback (most recent call last):
File "DF.py", line 33, in <module>
level()
File "DF.py", line 29, in level
l[b] = t
TypeError: list indices must be integers, not str
我该如何解决这个问题?此外,任何与此问题无关的提示或建议也将不胜感激,我是 Python 的新手,所以我需要一些专业提示:P
另外,我确信有一种方法可以以正确的格式打印出来,而无需扔掉数组并打印它。可能有一个循环,但如果我只是做标准
for i in l:
print l[i]
不起作用,因为它不会以 6x6 打印。它会以 1x36 格式打印出来 :P 所以请帮我玩这个小游戏!