def test_elephant_capture(self): """ 1. Mouse/rat 8. Elephant The exception is rax x elephant: the elephant can't capture the mouse and the mouse can capture the elephant """ player1 = MockPlayer() player2 = MockPlayer() piece1 = Piece(player1, Piece.MOUSE) piece8 = Piece(player2, 8) self.failIf(piece8.can_catch(piece1)) self.assertTrue(piece1.can_catch(piece8))
def test_piece_functionality(self): colour_black = "Black" colour_white = "White" black_piece_name = "K" white_piece_name = "Q" black_piece = Piece('Black', 'K') white_piece = Piece('White', 'Q') self.assertEqual(black_piece.name, black_piece_name) self.assertEqual(black_piece.colour, colour_black) self.assertEqual(white_piece.name, white_piece_name) self.assertEqual(white_piece.colour, colour_white) self.assertNotEqual(black_piece, white_piece)
def test_correct_initial_piece_placement(self): for colour, row in zip(["White", "Black"], ["1","8"]): rook = Piece(colour, 'R') self.assertEqual( str(self.board.piece_on_position('A' + row)), str(rook))
def init_pieces(self, send=True): self.pieces = list() self.fields = [[] for _ in range(24)] self.fields[0] = [True] * 2 self.fields[5] = [False] * 5 self.fields[7] = [False] * 3 self.fields[11] = [True] * 5 self.fields[23] = [False] * 2 self.fields[18] = [True] * 5 self.fields[16] = [True] * 3 self.fields[12] = [False] * 5 self.pieces = list() self.piece_size = 42 self.ping_iter = 0 ident = 1 for field_id, field in enumerate(self.fields): top = field_id // 12 == 1 for piece_id, is_black in enumerate(field): offset_x = self.board.triangle_width//2 + \ self.board.triangle_width * (field_id % 12) + \ ((field_id % 12) // 6) * self.board.offset_x x = offset_x if top else self.width - offset_x ((field_id % 12) // 6) * self.board.offset_x y = self.piece_size * \ (piece_id*2+1) if top else self.height - \ self.piece_size * (piece_id*2+1) pos = (x, y) self.pieces.append(Piece(self, ident, pos, is_black)) ident += 1 self.dice.reset() if self.reset_sound is not None: self.reset_sound.play() if send: connection.Send({"action": "resetboard"})
def select_piece(self) -> Piece: """Asks the user to select a piece to make a move with""" question = Ui.color_dict[self.board.turn_color] + \ ", your turn! Please select a piece. \n" piece = Piece(None, None, None, None, None) while piece.color is None or piece.color != self.board.turn_color: coordinate = input(question) position = self.coordinate2position(coordinate) piece = self.board.find_piece(position) question = "No piece of yours at this field, try again! \n" return piece
def test_trap_capture(self): """ If a piece are in a trap, your value is 0 and it can be captured by any other piece """ player1 = MockPlayer() player2 = MockPlayer() piece1 = Piece(player1, Piece.MOUSE) piece2 = Piece(player2, 2) piece2.trap() self.assertTrue(piece1.can_catch(piece2)) piece2.release() self.failIf(piece1.can_catch(piece2))
def test_capture(self): """ 1. Mouse/rat 2. Cat A catch is allowed to less or equal value. A cat can catch a mouse, but a mouse can't catch a cat """ player1 = MockPlayer() player2 = MockPlayer() piece1 = Piece(player1, Piece.MOUSE) piece2 = Piece(player2, 2) self.failIf(piece1.can_catch(piece2)) self.assertTrue(piece2.can_catch(piece1)) piece2 = Piece(player2, Piece.MOUSE) self.assertTrue(piece2.can_catch(piece1)) self.assertTrue(piece1.can_catch(piece2))