Считать файл карты в словарь - PullRequest
0 голосов
/ 04 ноября 2019

Нужна помощь в создании двухмерной карты. Я пытаюсь сделать карту Марио. Где у меня картинка. Но мне просто нужно установить их. Мне просто нужна помощь, чтобы определить, что такое Y, чтобы я мог отнести его к изображению. У меня есть словарь ФОТО.

NAMING = { # Naming from map to full name
            'M': "mario",
            'P': "peach",
            'B': "bowser",
            'G': "goomba",
            'K': "koopa",
            'C': "cap",
            'L': "mushroom",
            'V': "wall",
            'Y': "wall",
            'T': "gate"
        }

PICTURES = { # Naming from map to image path
    'M' : "gameImages/mario.png", "P" : "gameImages/peach.png", 
    "B" : "gameImages/bowser.png", "G" : "gameImages/goomba.png",
    "K" : "gameImages/koopa.png", "C" : "gameImages/cap.png", 
    "L" : "gameImages/mushroom.png", "V" : "gameImages/wall.png",
    "Y" : "gameImages/wall.png" , "T" : "gameImages/gate.png"
    }



def readFile(filename):
''' Read map file to dictionary '''



pass 

Файл TXT

YYYYYYYYYYYYYYYYYYYYYY
YM                   Y
Y                    Y
YVVVVVV    VVVVVVVVVVY
Y     K    G K G    CY
Y     K K KVVVVVVVVVVY
Y                   LY
YV VVVVVVVVVVVVVVVVVVY
YV VL      G       KLY
YV V  VVVV     G   KKY
YVGV V     VVVV      Y
YV V V G  V  G  VVVV Y
YV V V    V    V    GY
YVKV V    VG   V     Y
YV VGGG   V    V     Y
YV  G          V     Y
YVVVVVVVVVVVVVVVVVVKVY
YL K          G      Y
Y      G             Y
Y K        G      VBVY
Y      K          VTPY
YYYYYYYYYYYYYYYYYYYY Y
Y                  Y Y
Y                  YTY

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Используйте enumerate() во время итерации по строкам и столбцам.

Полученный дикт будет

  • основываться на кортежах координат X / Y
  • не иметь записей для пустых мест;измените это условие if not c.isspace():, если оно вам тоже нужно.
def read_map_file(filename):
   char_positions = {}
   with open(filename, 'r') as f:
      for y, line in enumerate(f):
          for x, c in enumerate(line):
              if not c.isspace():
                  char_positions[(x, y)] = c
   return char_positions
0 голосов
/ 04 ноября 2019
def readFile(filename):
    map = []
    with open(filename, 'r') as file:
        for line in file.readlines():
            row = []
            for char in line.strip('\n\r'):
                row.append(char)
            map.append(row)
    return map
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...