On 01/02/2015 02:21 AM, Steven D'Aprano wrote:
What is the purpose of the **kwargs? It doesn't get used, it just
silently ignores them.
Hopefully you got the answer for this from the previous message.
Why does the GameTile record the coordinates as strings?
Hopefully you got the answer for this from the previous message.
Your lookup_node method returns a GameTile or False on failure:
def lookup_node(self, x, y, ):
if not self.check_bounds(x, y):
return False
return self.grid[y][x]
I'm not sure about that design. I wonder whether it would be better to
return None, or raise an exception.
What would you suggest this code does on error, when the Node looked up
is out of bounds?
Latest copy of the code. I think I got every ones suggestion.
import sys
class GameTile():
def __init__(self, col, row, **kwargs):
# id is (X,Y)
self.id = str(row) + ',' + str(col)
self.col = col
self.row = row
def __str__(self):
return '%d, %d' % (self.col, self.row)
class GameGrid():
def __init__(self, cols=8, rows=7, **kwargs):
self.cols = cols
self.rows = rows
self.make_grid()
def make_grid(self):
# grid is 2d array as x, y ie [x][y].
self.grid = [[None] * self.cols for i in range(self.rows)]
for row in range(self.rows):
for col in range(self.cols):
self.grid[row][col] = GameTile(row=row, col=col)
def print_by_row(self):
for col in self.grid:
for row in col:
print(row)
def print_by_col(self):
for row in self.grid:
for col in row:
print(col)
def check_bounds(self, x, y):
return (0 <= x < self.rows) and (0 <= y < self.cols)
def lookup_node(self, x, y):
if not self.check_bounds(x, y):
return False
return self.grid[x][y]
def draw(self):
for col in self.grid:
print(end='| ')
for row in col:
print(row, end=' | ')
print()
grid = GameGrid(3, 3)
grid.draw()
print(sys.getsizeof(grid.grid))
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor