diff --git a/gamemap.py b/gamemap.py index e438d4a..7ee6f60 100644 --- a/gamemap.py +++ b/gamemap.py @@ -137,7 +137,8 @@ class GameMap(object): # p: player start (up to one per level) # regular expressions - matrixRegex = re.compile(r'([ \t]*([a-z][0-9]*)+(\n))+') + tileRegex = re.compile(r'([a-z ])([0-9]+|[ ])') + matrixRegex = re.compile(r'(?:[ \t]*(?:[a-z ](?:[0-9]+|[ ]))+(\n))+') def __init__(self, name, graph, matrix, dimensions): self.name = name @@ -165,7 +166,8 @@ Entering a map through stdin will be obsolete once testing is over.""" with open(infile, 'r') as f: data = f.read() except OSError as e: - print("The file could not be read. Falling back to stdin...") + print("The file could not be read.") + return None else: while tryToRead: @@ -205,28 +207,36 @@ list of lists of tuples.""" mat = [[]] x = 0 y = 0 - i = 0 l = 0 - while i < len(matrixStr): - if matrixStr[i].isalpha(): - j = i+1 - while j < len(matrixStr) and matrixStr[j].isdecimal(): - j += 1 - if j == i+1: # no number - mat[l].append((matrixStr[i], 0)) - else: - mat[l].append((matrixStr[i], int(matrixStr[i+1:j]))) - i = j - elif matrixStr[i] == '\n': + while len(matrixStr) > 0: + tile = GameMap.tileRegex.match(matrixStr) + if tile != None: + tileType = tile.group(1) + tileNum = tile.group(2) + if tileType == ' ': + tileType = 'e' + if tileNum == ' ': + tileNum = '0' + mat[l].append((tileType, int(tileNum))) + #x += 1 + matrixStr = matrixStr[len(tile.group()):] + elif matrixStr[0] == '\n': if x == 0: x = len(mat[l]) elif x != len(mat[l]): - raise RuntimeError('Map matrix has jagged edges.') + raise RuntimeError("Map matrix has jagged edges.") l += 1 - i += 1 + #x = 0 mat.append([]) - else: # assume it was a whitespace character. - i += 1 + i = 1 + while i < len(matrixStr) and matrixStr[i] in ' \t\n': + i += 1 + if i == len(matrixStr): + matrixStr = '' + else: + matrixStr = matrixStr[i:] + else: # This shouldn't happen, so if it does, there was an error. + raise RuntimeError("Unexpected token in map matrix: '{0}'".format(matrixStr)) y = len(mat) - 1 # Now for the graph diff --git a/testing/test1.xml b/testing/test1.xml index 32b549b..bf56fe4 100644 --- a/testing/test1.xml +++ b/testing/test1.xml @@ -1,33 +1,33 @@ - w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0 - w0w0w0w0e0e0e0e0e0e0e0e0e0w0e0w0e0w0e0w0e0w0e0e0e0e0e0e0w0w0 - w0w0w0w0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0w0 - w0w0e0e0e0e0w0w0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0w0w0w0e0e0w0w0 - w0w0w0e0e0e0w0w0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0w0w0 - w0e0e0e0w0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0w0w0 - w0e0e0e0w0e0e0e0e0w0e0e0e0w0w0w0e0e0w0w0w0w0w0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0w0w0w0w0e0w0e0e0e0e0e0e0w0w0w0e0w0w0e0e0w0w0 - w0w0w0w0w0w0w0w0w0w0e0e0e0w0e0e0e0e0e0e0w0w0w0e0w0w0e0e0w0w0 - w0e0e0w0e0e0e0e0w0e0e0e0e0w0e0e0w0e0w0e0e0w0w0e0e0e0e0w0w0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0w0e0w0e0e0w0w0e0e0e0e0w0w0w0 - w0e0e0w0e0e0e0e0w0e0e0e0e0w0e0e0e0e0e0e0e0e0w0w0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0w0w0w0w0w0w0w0w0w0w0w0w0w0e0e0w0w0w0w0 - w0e0e0w0e0e0e0e0w0e0e0w0e0e0e0e0e0e0w0w0w0w0e0e0e0e0e0e0w0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0w0e0e0e0e0e0e0e0e0w0w0 - w0e0e0w0e0e0e0e0w0e0e0w0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0w0e0e0w0w0e0e0w0w0w0w0 - w0e0e0w0e0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0w0w0e0e0w0w0w0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0w0w0w0w0w0w0e0e0w0w0e0e0e0e0w0w0 - w0e0e0w0e0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0w0 - w0e0e0w0e0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0w0w0w0w0w0w0e0e0e0e0w0e0e0e0e0w0 - w0e0e0w0e0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0w0w0e0e0w0w0 - w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 + w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w + w w + w w w w w w w w w w w + w w w w w w w + w w w w w w w w w w w + w w w w w w w w w + w w w w w w + w w w w w w w w w w w w + w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w w + w w w w w w w w w w w + w w w w w w w w w + w w w w w w w + w w w w w w w w w w w w w w w w w w + w w w w w w w w w w + w w w w w w + w w w w w w + w w w w w w w w w w + w w w w w w w w w w + w w w w w w w w w w w w + w w w w w w + w w w w + w w w w w w + w w w w w w w w w w + w w w w w w w + w w w w w + w w w w w w + w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w diff --git a/testing/test2.xml b/testing/test2.xml index b85b4e9..ad4eded 100644 --- a/testing/test2.xml +++ b/testing/test2.xml @@ -1,33 +1,33 @@ - w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 - w0w0w0w0w0w0x3e0e0w0e0e0e0e0e0w0e0e0e0e0e0e0w0e0w0w0w0w0w0w0 - w0w0w0w0e0e0e0e0e0w0e0e0e0e0e0w0e0e0w0w0e0e0w0e0e0e0w0w0w0w0 - w0w0w0w0e0e0e0e0e0w0e0e0e0e0e0w0e0e0w0w0e0e0e0e0e0e0e0e0w0w0 - w0w0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0w0w0e0e0e0e0w0 - w0w0e0e0e0e0e0e0e0e0e0e0e0e0e0w0w0w0e0e0w0w0w0w0w0e0e0e0e0w0 - w0e0e0e0w0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0w0w0w0w0w0e0w0 - w0e0e0e0w0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0w0w0w0w0w0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0e0w0w0w0w0e0e0w0w0w0w0w0w0w0w0w0w0 - w0w0w0w0w0w0w0w0w0w0e0e0e0w0w0w0e0e0e0e0e0e0w0w0e0e0w0w0w0w0 - w0e0e0e0e0x1e0x2e0e0e0e0e0e0w0w0e0e0e0e0e0e0w0e0e0e0e0e0e0w0 - w0e0w0e0e0e0e0e0e0e0e0e0e0w0w0w0e0e0e0e0e0e0w0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0w0w0e0e0e0e0e0w0w0w0w0e0e0e0e0w0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0w0w0e0e0w0w0w0w0w0w0w0w0w0e0e0w0e0e0e0w0w0w0w0 - w0w0w0w0w0e0w0w0w0e0e0w0w0w0w0w0w0w0e0e0e0e0w0w0e0x4e0e0e0w0 - w0w0w0w0e0e0w0w0w0e0e0w0w0w0w0w0w0w0e0e0e0e0w0w0e0e0e0e0e0w0 - w0e0e0e0e0w0w0w0w0w0e0w0e0e0w0e0e0e0w0w0w0w0w0w0w0w0w0w0w0w0 - w0e0e0e0e0w0w0w0w0w0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0w0w0w0w0w0w0w0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0w0w0w0w0w0e0w0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0e0e0e0e0e0w0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0e0e0e0e0e0w0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0w0w0w0w0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0w0w0w0w0e0e0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0e0e0e0e0e0w0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0e0e0e0e0e0w0e0e0e0w0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0e0e0e0e0e0e0w0e0e0e0w0w0w0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 - w0w0w0w0w0w0w0w0w0w0w0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0 + w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w + w w w w w w x3 w w w w w w w w w + w w w w w w w w w w w w w + w w w w w w w w w w + w w w w w w w + w w w w w w w w w w w + w w w w w w w w w w + w w w w w w w w w w + w w w w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w w w + w x1 x2 w w w w + w w w w w w w + w w w w w w w w w + w w w w w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w x4 w + w w w w w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w w w w + w w w w w w w w + w w w w w w w w w w + w w w w w w w w w + w w w w + w w w w + w w w w w w + w w w w w w w + w w w w + w w w w + w w w w w w + w w w w w w w w w w w w diff --git a/testing/test3.xml b/testing/test3.xml index 35f8536..43e4932 100644 --- a/testing/test3.xml +++ b/testing/test3.xml @@ -1,23 +1,23 @@ - w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 - w0e0e0e0e0e0x3e0e0e0w0w0w0w0e0w0w0w0w0w0w0w0w0e0w0w0w0w0w0w0 - w0e0e0e0e0e0e0e0e0e0e0e0w0w0e0w0e0e0e0e0e0e0w0e0e0e0w0w0w0w0 - w0e0e0e0e0e0e0e0e0e0e0e0w0w0e0w0e0e0e0e0e0e0w0e0e0e0w0w0w0w0 - w0w0w0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0w0e0e0e0e0e0e0e0w0w0w0 - w0w0w0e0e0e0e0e0e0w0w0e0e0e0e0e0e0e0w0w0e0e0e0e0e0e0e0w0w0w0 - w0w0w0w0w0w0w0w0w0w0e0e0e0e0e0w0e0e0e0e0e0w0w0e0e0e0e0e0e0w0 - w0w0w0w0w0w0w0w0w0w0e0e0e0e0e0w0e0e0e0e0e0w0w0e0e0e0e0e0e0w0 - w0w0w0w0w0e0e0e0w0w0w0w0e0e0e0w0e0e0w0w0w0w0w0w0e0e0e0e0e0w0 - w0w0w0w0w0e0e0e0e0e0w0w0w0e0e0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 - w0e0w0w0e0e0e0x2e0e0w0w0e0e0e0e0w0w0e0e0e0e0w0e0e0e0e0e0e0w0 - w0e0w0w0e0e0e0e0e0e0w0w0w0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0 - w0e0w0w0e0e0w0w0e0w0w0w0e0e0w0w0e0e0w0e0e0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0w0w0e0w0w0w0w0w0w0w0w0w0w0w0w0w0w0e0w0w0w0w0w0w0 - w0w0w0w0e0e0e0e0w0w0w0w0e0e0e0e0e0e0e0e0e0e0w0e0e0x4e0e0e0w0 - w0w0w0w0e0e0e0e0w0w0w0w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0 - w0e0e0e0e0e0w0w0w0w0w0w0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0 - w0w0w0w0w0w0w0w0w0w0w0w0e0e0e0e0e0e0e0e0e0e0w0w0w0w0w0w0w0w0 + w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w + w x3 w w w w w w w w w w w w w w w w w w + w w w w w w w w w + w w w w w w w w w + w w w w w w w w w + w w w w w w w w w w + w w w w w w w w w w w w w w + w w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w w w w w w w + w w w x2 w w w w w w + w w w w w w w w + w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w w w w w w w + w w w w w w w w w x4 w + w w w w w w w w w w + w w w w w w w w w + w w w w w w w w w w w w w w w w w w w w diff --git a/testing/test4.xml b/testing/test4.xml index 6acc507..81c5b38 100644 --- a/testing/test4.xml +++ b/testing/test4.xml @@ -1,33 +1,33 @@ - w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 - w0w0w0w0w0w0w0w0e0w0w0w0w0w0w0w0w0w0w0w0e0e0e0e0e0e0e0e0e0w0 - w0w0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0w0e0e0w0e0w0e0w0e0e0w0 - w0w0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0w0w0e0w0e0w0e0w0e0e0w0 - w0e0e0e0w0w0e0e0e0w0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0w0 - w0e0e0e0w0w0e0e0e0w0w0w0e0e0w0w0w0w0w0w0w0w0w0w0e0e0w0w0w0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0 - w0w0w0w0e0e0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0w0w0e0e0w0w0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0w0w0e0e0w0w0e0w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0w0 - w0e0e0e0e0e0e0e0e0w0e0e0e0w0w0w0e0e0w0w0w0e0e0e0e0w0e0e0e0w0 - w0w0w0w0w0w0w0w0w0w0e0e0e0w0w0w0e0e0w0w0w0e0e0e0e0w0e0e0w0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0w0w0e0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0w0w0e0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0x2e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0w0e0w0e0e0e0e0e0e0e0e0w0 - w0e0e0e0e0e0e0e0e0e0e0e0e0w0e0e0e0e0e0e0w0e0e0e0e0e0e0e0e0w0 - w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0w0 + w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w + w w w w w w w w w w w w w w w w w w w w + w w w w w w w w w + w w w w w w w w w w + w w w w w w + w w w w w w w w w w w w w w w w w w w w + w w + w w + w w w w w w w w w w w w w w w w w w w w w w w w w + w w w w + w w w w + w w w w w w w w + w w w w + w w w w + w w w w + w w w w w w w w + w w w w w w w w w w + w w w w w w w w w w w w w w w w w w w + w w w w + w w w w + w w w w w w + w w w w w w + w w x2 w + w w w + w w w w + w w w w w + w w w w + w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w