diff --git a/chess.py b/chess.py index f6b08c0..85ec1b8 100644 --- a/chess.py +++ b/chess.py @@ -17,9 +17,17 @@ init_positions = {"pawn" : cross(files, pawn_ranks), "king" : cross("e", home_ranks) } -def unicode_repr(color, piece): - return lookup(color.upper() + " CHESS " + piece.upper()) +class Piece: + def __init__(self, color=None, piece=None): + self.color = color + self.piece = piece + + def __repr__(self): + if None in (self.piece, self.color): + return None + name = self.color.upper() + " CHESS " + self.piece.upper() + return lookup(name) class Game: def __init__(self): @@ -32,26 +40,26 @@ class Game: r += rank + " |" for file in files: piece = self.board[file+rank] - if piece == None: + if piece.piece == None: r += " " else: - r += " " + unicode_repr(*piece) + r += " " + repr(piece) r += "\n" r += " +" + "-"*16 + "\n" r += " "*4 + " ".join(list(files)) return r def make_board(self): - self.board = dict((sq, None) for sq in squares) + self.board = dict((sq, Piece()) for sq in squares) # Add pieces for piece, positions in init_positions.items(): for sq in positions: - self.board[sq] = piece + self.board[sq].piece = piece # Add colors for sq in cross(files, "12"): - self.board[sq] = ("white", self.board[sq]) + self.board[sq].color = "white" for sq in cross(files, "78"): - self.board[sq] = ("black", self.board[sq]) + self.board[sq].color = "black"