簡體   English   中英

在python中打印和編輯多個列表

[英]Printing and editing multiple lists in python

我試圖創建一個小型的基於文本的游戲,並且要實現這一目標,我創建了20個列表,添加了75個空格來填充列表,然后一次同時打印每個列表。 我希望以后能夠在某些位置編輯列表,以便在再次打印列表時,控制台將在我放置列表的位置顯示文本。 這是我到目前為止提出的...

理想的效果是讓控制台打印以下內容:

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

但是我得到了這個:

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

我不知道我的draw函數或write函數到底發生了什么,但是(對我而言)似乎應該起作用。

任何幫助都將是驚人的,因為我是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

如果要管理基於文本的“屏幕”,最好使用curses模塊。 盡管它有些復雜,但它確實是為您想要的設計的。 同樣,通過使用更多函數,您可以使程序縮短大約18倍,因為您會重復相同的代碼多次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM