From 6aa515aa2d8565ca05679ced3dd4e5584ceb2213 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 18 Jan 2012 22:33:27 -0500 Subject: [PATCH] add Map._finalize() --- Map.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Map.py b/Map.py index d85fcea..cdd1901 100644 --- a/Map.py +++ b/Map.py @@ -3,15 +3,19 @@ class Map(object): def __init__(self): self._arr = [] + self._list = [] + self._finalized = False def add(self, row, col, tile): self._extend(row, col) self._arr[row][col] = tile + self._list.append(tile) + self._finalized = False def get(self, row, col): - if len(self._arr) <= row: + if row < 0 or len(self._arr) <= row: return None - if len(self._arr[row]) <= col: + if col < 0 or len(self._arr[row]) <= col: return None return self._arr[row][col] @@ -20,3 +24,27 @@ class Map(object): self._arr.append([]) while len(self._arr[row]) <= col: 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()