Spaces in the map layout now mean "e" or "0" (context dependent). The testing maps have been changed to reflect this.

This commit is contained in:
Patrick Marsee 2019-02-21 10:52:30 -05:00
parent 3dc9b3b2bb
commit b5930957e5
5 changed files with 130 additions and 120 deletions

View file

@ -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

View file

@ -1,33 +1,33 @@
<map openingText="Floor 1 map loaded successfully. Normally, this would describe the environment." playerStart="5, 26">
<layout>
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
</layout>
<exit id="1" location="5, 10" destination="testing/test2.xml" name="upstairs"/>
<exit id="2" location="21, 23" destination="testing/test4.xml" name="downstairs"/>

View file

@ -1,33 +1,33 @@
<map openingText="Floor 2" playerStart="6, 10">
<layout>
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
</layout>
<exit id="1" location="5, 10" destination="testing/test1.xml" name="downstairs"/>
<exit id="2" location="7, 10" destination="testing/test3.xml" name="upstairs"/>

View file

@ -1,23 +1,23 @@
<map openingText="Floor 3" playerStart="6, 10">
<layout>
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
</layout>
<exit id="2" location="7, 10" destination="testing/test2.xml" name="downstairs"/>
<exit id="3" location="6, 1" destination="testing/test2.xml" name="north"/>

View file

@ -1,33 +1,33 @@
<map openingText="Basement" playerStart="22, 22">
<layout>
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
</layout>
<exit id="2" location="23, 22" destination="testing/test1.xml" name="upstairs"/>
</map>