0

ファイルを読み取り、ゲームのすべてのレベルを 1 つのセルにリストする関数を作成する必要があります。すべてのセルにはレベルの行が文字列として含まれており、すべての行はセルの要素です。最後のセルには、レベルの前に表示される数字や単語を含めず、「\n」または空のセルを含めないでください。この機能を実装しましたが、このようなレベルではうまく機能しません。いくつかのアイデアがありますか?

ファイルからのレベル

; 1

####
# .#
#  ###
#*@  #
#  $ #
#  ###
####

リストのセルとして:

['####', '# .#', '#  ###', '#*@  #', '#  $ #', '#  ###', '####']

私が問題を抱えているレベルの例:

; 154 'Take the long way home.'

 ############################
 #                          #
 # ######################## #
 # #                      # #
 # # #################### # #
 # # #                  # # #
 # # # ################ # # #
 # # # #              # # # #
 # # # # ############ # # # #
 # # # # #            # # # #
 # # # # # ############ # # #
 # # # # #              # # #
 # # # # ################ # #
 # # # #                  # #
##$# # #################### #
#. @ #                      #
#############################

次のようになります。

["54 'Take the long way home.'", '', ' ############################', ' #                          #', ' # ######################## #', ' # #                      # #', ' # # #################### # #', ' # # #                  # # #', ' # # # ################ # # #', ' # # # #              # # # #', ' # # # # ############ # # # #', ' # # # # #            # # # #', ' # # # # # ############ # # #', ' # # # # #              # # #', ' # # # # ################ # #', ' # # # #                  # #', '##$# # #################### #', '#. @ #                      #', '#############################']

私のコード:

def loader(filename):

    tmp=[]
    levels=[]
    f=open(filename, "r")
    f=f.read().split(';')
    for line in f:
        tmp.append(line[2:].strip())
    tmp.remove("")
    for i in tmp:
        i=i.split("\n")
        levels.append(i)
    print levels
4

2 に答える 2

0

あなたが達成しようとしていることを正確に追跡するのはちょっと難しいですが、この関数はあなたが望むものをあなたに与えると思います。

def loader(filename):
    f = open(filename, 'r')
    lines = f.read().split('\n')
    header = lines[0] # don't know if you need this
    level = lines[2:]
    f.close()
    return level

編集:ああ、私はファイルごとに複数のレベルがあることに気づいていませんでした。

では、これはどうですか?

def loader(filename):
    f = open(filename, 'r')
    levels = f.read().split(';')[1:]
    return [level.strip().split('\n')[2:] for level in levels]
于 2012-12-26T21:25:59.550 に答える
0
def loader(filename):

    tmp=[]
    levels=[]
    f=open(filename, "r")
    f=f.read().split(';')
    for i in f[1:]:
        i=i.split("\n")
        levels.append(i[2:-1])
    print levels

私にとってはうまくいきます:

testinput.txt:

; 1

####
# .#
#  ###
#*@  #
#  $ #
#  ###
####
; 154 'Take the long way home.'

 ############################
 #                          #
 # ######################## #
 # #                      # #
 # # #################### # #
 # # #                  # # #
 # # # ################ # # #
 # # # #              # # # #
 # # # # ############ # # # #
 # # # # #            # # # #
 # # # # # ############ # # #
 # # # # #              # # #
 # # # # ################ # #
 # # # #                  # #
##$# # #################### #
#. @ #                      #
#############################

出力:

[['####', '# .#', '#  ###', '#*@  #', '#  $ #', '#  ###', '####'], [' ############################', ' #                          #', ' # ######################## #', ' # #                      # #', ' # # #################### # #', ' # # #                  # # #', ' # # # ################ # # #', ' # # # #              # # # #', ' # # # # ############ # # # #', ' # # # # #            # # # #', ' # # # # # ############ # # #', ' # # # # #              # # #', ' # # # # ################ # #', ' # # # #                  # #', '##$# # #################### #', '#. @ #                      #', '#############################']]
于 2012-12-26T21:38:25.457 に答える