[英]Printing and editing multiple lists in python
Im trying to create a small text based game, and to achieve this I am created 20 lists, added 75 spaces to fill the lists, then printed each of the lists one at a time, all at the same time. 我试图创建一个小型的基于文本的游戏,并且要实现这一目标,我创建了20个列表,添加了75个空格来填充列表,然后一次同时打印每个列表。 I was hoping to then be able to edit the lists at certain positions so that when the lists were printed again, the console would display text where I placed it.
我希望以后能够在某些位置编辑列表,以便在再次打印列表时,控制台将在我放置列表的位置显示文本。 This is what I came up with so far...
这是我到目前为止提出的...
The desired effect was to have the console print this: 理想的效果是让控制台打印以下内容:
============================
= =
= TEXT ADVENTURE: =
= WAR OF ZE MONSTERS =
= =
============================
But instead I get this: 但是我得到了这个:
===========================
I don't know exactly what is happening with my draw function or my write function but (to me) it would seem as if it should work. 我不知道我的draw函数或write函数到底发生了什么,但是(对我而言)似乎应该起作用。
Any help would be amazing as I am relatively new to python. 任何帮助都将是惊人的,因为我是python的新手。 Thanks in advance!
提前致谢!
import time
#
# Joel Williams
#
# Purpose: Create a Working Text Engine
#
# start of classes
class line():
def __init__(self):
counter = 0
self.list = []
while (counter != lineSize):
self.list.append(' ')
counter = counter + 1
class cursor():
def __init__(self):
self.cursorPosY = 0
self.cursorPosX = 0
self.cursorPos = [self.cursorPosY, self.cursorPosX]
def setCursorPos(self,y,x):
self.cursorPosY = y
self.cursorPosX = x
self.cursorPos = [self.cursorPosY, self.cursorPosX]
# end of cursor class
# start of peliminary declarations
lineSize = 74
term = cursor()
_1 = line()
_2 = line()
_3 = line()
_4 = line()
_5 = line()
_6 = line()
_7 = line()
_8 = line()
_9 = line()
_10 = line()
_11 = line()
_12 = line()
_13 = line()
_14 = line()
_15 = line()
_16 = line()
_17 = line()
_18 = line()
_19 = line()
_20 = line()
# end of preliminary declarations
# start of preliminary functions
def delLine(x):
del x[:]
counter = 0
x = []
while (counter != lineSize):
x.append(' ')
counter = counter + 1
def clear():
# clears all lists
delLine(_1.list)
delLine(_2.list)
delLine(_3.list)
delLine(_4.list)
delLine(_5.list)
delLine(_6.list)
delLine(_7.list)
delLine(_8.list)
delLine(_9.list)
delLine(_10.list)
delLine(_11.list)
delLine(_12.list)
delLine(_13.list)
delLine(_14.list)
delLine(_15.list)
delLine(_16.list)
delLine(_17.list)
delLine(_18.list)
delLine(_19.list)
delLine(_20.list)
def clearLine():
if(term.cursorPosY == 0):
delLine(_1.list)
elif(term.cursorPosY == 1):
delLine(_2.list)
elif(term.cursorPosY == 2):
delLine(_3.list)
elif(term.cursorPosY == 3):
delLine(_4.list)
elif(term.cursorPosY == 4):
delLine(_5.list)
elif(term.cursorPosY == 5):
delLine(_6.list)
elif(term.cursorPosY == 6):
delLine(_7.list)
elif(term.cursorPosY == 7):
delLine(_8.list)
elif(term.cursorPosY == 8):
delLine(_9.list)
elif(term.cursorPosY == 9):
delLine(_10.list)
elif(term.cursorPosY == 10):
delLine(_11.list)
elif(term.cursorPosY == 11):
delLine(_12.list)
elif(term.cursorPosY == 12):
delLine(_13.list)
elif(term.cursorPosY == 13):
delLine(_14.list)
elif(term.cursorPosY == 14):
delLine(_15.list)
elif(term.cursorPosY == 15):
delLine(_16.list)
elif(term.cursorPosY == 16):
delLine(_17.list)
elif(term.cursorPosY == 17):
delLine(_18.list)
elif(term.cursorPosY == 18):
delLine(_19.list)
elif(term.cursorPosY == 19):
delLine(_20.list)
def draw():
# draws the lists
# each lists is a line (Y)
# each of the list's properties are the text (X)
i1 = ''.join(_1.list)
i2 = ''.join(_2.list)
i3 = ''.join(_3.list)
i4 = ''.join(_4.list)
i5 = ''.join(_5.list)
i6 = ''.join(_6.list)
i7 = ''.join(_7.list)
i8 = ''.join(_8.list)
i9 = ''.join(_9.list)
i10 = ''.join(_10.list)
i11 = ''.join(_11.list)
i12 = ''.join(_12.list)
i13 = ''.join(_13.list)
i14 = ''.join(_14.list)
i15 = ''.join(_15.list)
i16 = ''.join(_16.list)
i17 = ''.join(_17.list)
i18 = ''.join(_18.list)
i19 = ''.join(_19.list)
i20 = ''.join(_20.list)
print i1
print i2
print i3
print i4
print i5
print i6
print i7
print i8
print i9
print i10
print i11
print i12
print i13
print i14
print i15
print i16
print i17
print i18
print i19
print i20
print i20
def write(str):
# changes the lists
c = 0
for i in str:
if term.cursorPosX > lineSize:
term.cursorPosX = 0
if term.cursorPosY > 19:
term.cursorPosY = 0
else:
term.cursorPosY = term.cursorPosY + 1
if term.cursorPosY is 0:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 1:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 2:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 3:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 4:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 5:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 6:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 7:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 8:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 9:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 10:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 11:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 12:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 13:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 14:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 15:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 16:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 17:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 18:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
elif term.cursorPosY is 19:
_1.list[term.cursorPosX] = str[c]
c = c + 1
term.cursorPosX = term.cursorPosX + 1
def writf(str,y,x):
write(str)
term.setCursorPos(y,x)
def ask(x):
i = raw_input(x)
return i
def wait(i):
time.sleep(i)
def cursorPos(y,x):
term.setCursorPos(y,x)
# end of preliminary functions
# start of actual stuff
# start of Main Stuff
# start of game functions
def startScreen():
writf('============================ ',8,10)
writf('= = ',9,10)
writf('= TEXT ADVENTURE: = ',10,10)
writf('= WAR OF ZE MONSTERS = ',11,10)
writf('= = ',10,10)
writf('============================ ',12,10)
draw()
wait(5)
# end of game functions
def Main():
startScreen()
Main()
# end of Stuff
# end of actual stuff
If you want to manage a text based "screen", you would be better off using the curses module. 如果要管理基于文本的“屏幕”,最好使用curses模块。 This is designed exactly for what you want, though it is somewhat complicated.
尽管它有些复杂,但它确实是为您想要的设计的。 Also, you could make your program about eighteen times shorter by using more functions, because you are repeating the same code many times.
同样,通过使用更多函数,您可以使程序缩短大约18倍,因为您会重复相同的代码多次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.