Printing and editing multiple lists in python
Question: 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. 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.

Any help would be amazing as I am relatively new to 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
    


Answer: If you want to manage a text based "screen", you would be better off using the
curses module. 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.

