在python中打印和编辑多个列表

时间:2013-04-27 22:14:59

标签: python list printing

我试图创建一个基于文本的小游戏,为了达到这个目的,我创建了20个列表,添加了75个空格来填充列表,然后一次打印一个列表,所有这些都在同一时间。我希望能够在某些位置编辑列表,这样当再次打印列表时,控制台会显示我放置它的文本。这就是我到目前为止所提出的......

理想的效果是让控制台打印出来:

  ============================ 
  =                          = 
  =      TEXT ADVENTURE:     = 
  =    WAR OF ZE MONSTERS    = 
  =                          =
  ============================ 

但我得到了这个:

===========================

我不知道我的绘图功能或我的写函数到底发生了什么,但(对我来说)它看起来好像应该有效。

任何帮助都会很棒,因为我对python来说比较新。提前谢谢!

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

1 个答案:

答案 0 :(得分:1)

如果您想管理基于文本的“屏幕”,最好使用curses模块。这个设计完全符合您的要求,尽管它有点复杂。此外,您可以通过使用更多功能使您的程序缩短18倍,因为您多次重复相同的代码。