简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM