add Map._finalize()
This commit is contained in:
parent
a0957a0ec9
commit
6aa515aa2d
32
Map.py
32
Map.py
@ -3,15 +3,19 @@
|
|||||||
class Map(object):
|
class Map(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._arr = []
|
self._arr = []
|
||||||
|
self._list = []
|
||||||
|
self._finalized = False
|
||||||
|
|
||||||
def add(self, row, col, tile):
|
def add(self, row, col, tile):
|
||||||
self._extend(row, col)
|
self._extend(row, col)
|
||||||
self._arr[row][col] = tile
|
self._arr[row][col] = tile
|
||||||
|
self._list.append(tile)
|
||||||
|
self._finalized = False
|
||||||
|
|
||||||
def get(self, row, col):
|
def get(self, row, col):
|
||||||
if len(self._arr) <= row:
|
if row < 0 or len(self._arr) <= row:
|
||||||
return None
|
return None
|
||||||
if len(self._arr[row]) <= col:
|
if col < 0 or len(self._arr[row]) <= col:
|
||||||
return None
|
return None
|
||||||
return self._arr[row][col]
|
return self._arr[row][col]
|
||||||
|
|
||||||
@ -20,3 +24,27 @@ class Map(object):
|
|||||||
self._arr.append([])
|
self._arr.append([])
|
||||||
while len(self._arr[row]) <= col:
|
while len(self._arr[row]) <= col:
|
||||||
self._arr[row].append(None)
|
self._arr[row].append(None)
|
||||||
|
|
||||||
|
def _finalize(self):
|
||||||
|
if self._finalized:
|
||||||
|
return
|
||||||
|
self._neighbors = {}
|
||||||
|
def check(_r, _c, tile):
|
||||||
|
n = self.get(_r, _c)
|
||||||
|
if n:
|
||||||
|
self._neighbors[_c].append(n)
|
||||||
|
for row, r in enumerate(self._arr):
|
||||||
|
for col, tile in enumerate(r):
|
||||||
|
if tile:
|
||||||
|
self._neighbors[tile] = []
|
||||||
|
offset = row & 1
|
||||||
|
for i in range(2):
|
||||||
|
c = col - 1 + i + offset
|
||||||
|
check(row - 1, c)
|
||||||
|
check(row + 1, c)
|
||||||
|
check(row, col - 1)
|
||||||
|
check(row, col + 1)
|
||||||
|
self._finalized = True
|
||||||
|
|
||||||
|
def number(self):
|
||||||
|
self._finalize()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user