range methods

better get()
allow print() to be useful with false/true grids
This commit is contained in:
Stefan Harmuth 2021-12-13 07:19:27 +01:00
parent d5a278ceef
commit 3c855e6749

View File

@ -34,13 +34,22 @@ class Grid:
self.mode3D = False
def __trackBoundaries(self, pos: Coordinate):
self.minX = min(self.minX, pos.x)
self.minY = min(self.minY, pos.y)
self.maxX = max(self.maxX, pos.x)
self.maxY = max(self.maxY, pos.y)
self.minX = min(pos.x, self.minX)
self.minY = min(pos.y, self.minY)
self.maxX = max(pos.x, self.maxX)
self.maxY = max(pos.y, self.maxY)
if self.mode3D:
self.minZ = min(self.minZ, pos.z)
self.maxZ = max(self.maxZ, pos.z)
self.minZ = min(pos.z, self.minZ)
self.maxZ = max(pos.z, self.maxZ)
def rangeX(self):
return range(self.minX, self.maxX + 1)
def rangeY(self):
return range(self.minY, self.maxY + 1)
def rangeZ(self):
return range(self.minZ, self.maxZ + 1)
def toggle(self, pos: Coordinate):
if pos in self.__grid:
@ -74,10 +83,7 @@ class Grid:
return self.set(pos, self.get(pos) / value)
def get(self, pos: Coordinate) -> Any:
if pos in self.__grid:
return self.__grid[pos]
else:
return self.__default
return self.__grid.get(pos, self.__default)
def getOnCount(self) -> int:
return len(self.__grid)
@ -247,9 +253,12 @@ class Grid:
return pathCoords
def print(self, spacer: str = ""):
def print(self, spacer: str = "", true_char: str = None):
for y in range(self.minY, self.maxY + 1):
for x in range(self.minX, self.maxX + 1):
if true_char:
print(true_char if self.get(Coordinate(x, y)) else " ", end="")
else:
print(self.get(Coordinate(x, y)), end="")
print(spacer, end="")