From dab851ca077bbd66e15cd5ab1f58bd653f50f790 Mon Sep 17 00:00:00 2001 From: Tibor Bizjak Date: Sun, 1 Sep 2019 21:29:25 +0200 Subject: [PATCH] Added game repr --- chess.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/chess.py b/chess.py index bb75cd7..f6b08c0 100644 --- a/chess.py +++ b/chess.py @@ -1,3 +1,5 @@ +from unicodedata import lookup + def cross(A, B): return tuple(a+b for a in A for b in B) @@ -14,10 +16,31 @@ init_positions = {"pawn" : cross(files, pawn_ranks), "queen" : cross("d", home_ranks), "king" : cross("e", home_ranks) } + +def unicode_repr(color, piece): + return lookup(color.upper() + " CHESS " + piece.upper()) + + class Game: def __init__(self): self.make_board() + def __repr__(self): + # Unicode board representation + r = "" + for rank in ranks: + r += rank + " |" + for file in files: + piece = self.board[file+rank] + if piece == None: + r += " " + else: + r += " " + unicode_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) # Add pieces @@ -30,10 +53,12 @@ class Game: for sq in cross(files, "78"): self.board[sq] = ("black", self.board[sq]) + + def test(): game = Game() assert len(squares) == 8**2 assert sum(map(len, init_positions.values())) == 8*4 + print(game) test() -