Exemplo n.º 1
0
    def _handle_input(self):
        poll = pygame.event.poll

        event = poll()
        while event:
            if event.type == QUIT:
                self.running = False
                break
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    self.running = False
                    break
            elif event.type == MOUSEBUTTONDOWN:
                position = pygame.mouse.get_pos()
                column = position[0] // 100
                row = position[1] // 100
                coords = Coordinates.from_matrix_coordinates((row, column))
                piece = self.table.get(coords)
                if piece and piece.color == 'white':
                    self._selected = (column, row)
                elif self._selected:
                    selected_coords = Coordinates.from_matrix_coordinates(
                        (self._selected[1], self._selected[0]))
                    piece = self.table.get(selected_coords)
                    if piece.can_move_to(coords):
                        self.table.move_piece(selected_coords, coords)
                    self._selected = None
                else:
                    self._selected = None

            event = poll()
 def test_color(self):
     coord = Coordinates('a', 1)
     self.assertEqual(constants.BLACK, coord.color)
     coord = Coordinates('b', 2)
     self.assertEqual(constants.BLACK, coord.color)
     coord = Coordinates('a', 2)
     self.assertEqual(constants.WHITE, coord.color)
     coord = Coordinates('b', 1)
     self.assertEqual(constants.WHITE, coord.color)
Exemplo n.º 3
0
 def __next__(self):
     if self._next >= 8:
         raise StopIteration()
     piece = self._row[self._next]
     coord = Coordinates.from_matrix_coordinates((self._row_number, self._next))
     self._next += 1
     return coord, piece
Exemplo n.º 4
0
 def _set_pieces(self, pieces: dict, color:str):
     for piece_type, coords in pieces.items():
         Piece = self._piece_map.get(piece_type)
         if Piece.min_pieces <= len(coords) <= Piece.max_pieces:
             for piece_coord in coords:
                 letter = piece_coord[0]
                 number = int(piece_coord[1])
                 coord = Coordinates(letter, number)
                 matrix_coordinates = coord.matrix_coordinates
                 self.matrix[matrix_coordinates[0]][matrix_coordinates[1]] = Piece(coord, color)
Exemplo n.º 5
0
 def can_move_to(self, new_coords: Coordinates):
     distance = new_coords.distance(self.coordinates)
     if any(distance):
         if distance[0] and not distance[1]:
             return True
         elif not distance[0] and distance[1]:
             return True
         elif distance[0] == distance[1]:
             return True
     return False
class TestCoordinates(unittest.TestCase):
    def setUp(self):
        self.coordinates = Coordinates('d', 4)

    def test_coordinates_initialization(self):
        self.assertEqual('d', self.coordinates.letter)
        self.assertEqual(4, self.coordinates.number)

    def test_coordinates_matrix_coordinates(self):
        self.assertEqual((3, 3), self.coordinates.matrix_coordinates)

    def test_is_before(self):
        new_coord = Coordinates('d', 5)
        self.assertTrue(new_coord.is_before(self.coordinates))
        self.assertFalse(self.coordinates.is_before(new_coord))

    def test_is_behind(self):
        new_coord = Coordinates('d', 5)
        self.assertFalse(new_coord.is_behind(self.coordinates))
        self.assertTrue(self.coordinates.is_behind(new_coord))

    def test_distance(self):
        new_coord = Coordinates('d', 4)
        self.assertEqual((0, 0), self.coordinates.distance(new_coord))
        new_coord = Coordinates('d', 5)
        self.assertEqual((0, 1), self.coordinates.distance(new_coord))
        new_coord = Coordinates('e', 4)
        self.assertEqual((1, 0), self.coordinates.distance(new_coord))
        new_coord = Coordinates('e', 5)
        self.assertEqual((1, 1), self.coordinates.distance(new_coord))
        new_coord = Coordinates('d', 3)
        self.assertEqual((0, 1), self.coordinates.distance(new_coord))
        new_coord = Coordinates('c', 4)
        self.assertEqual((1, 0), self.coordinates.distance(new_coord))
        new_coord = Coordinates('c', 3)
        self.assertEqual((1, 1), self.coordinates.distance(new_coord))

    def test_color(self):
        coord = Coordinates('a', 1)
        self.assertEqual(constants.BLACK, coord.color)
        coord = Coordinates('b', 2)
        self.assertEqual(constants.BLACK, coord.color)
        coord = Coordinates('a', 2)
        self.assertEqual(constants.WHITE, coord.color)
        coord = Coordinates('b', 1)
        self.assertEqual(constants.WHITE, coord.color)
 def test_distance(self):
     new_coord = Coordinates('d', 4)
     self.assertEqual((0, 0), self.coordinates.distance(new_coord))
     new_coord = Coordinates('d', 5)
     self.assertEqual((0, 1), self.coordinates.distance(new_coord))
     new_coord = Coordinates('e', 4)
     self.assertEqual((1, 0), self.coordinates.distance(new_coord))
     new_coord = Coordinates('e', 5)
     self.assertEqual((1, 1), self.coordinates.distance(new_coord))
     new_coord = Coordinates('d', 3)
     self.assertEqual((0, 1), self.coordinates.distance(new_coord))
     new_coord = Coordinates('c', 4)
     self.assertEqual((1, 0), self.coordinates.distance(new_coord))
     new_coord = Coordinates('c', 3)
     self.assertEqual((1, 1), self.coordinates.distance(new_coord))
Exemplo n.º 8
0
 def test_queen_can_move_to_right(self):
     new_coord = Coordinates('e', 4)
     self.assertTrue(self.queen.can_move_to(new_coord))
Exemplo n.º 9
0
 def test_queen_can_move_more_than_one_tile(self):
     new_coord = Coordinates('d', 8)
     self.assertTrue(self.queen.can_move_to(new_coord))
Exemplo n.º 10
0
 def setUp(self):
     self.coords = Coordinates('d', 4)
     self.knight = Knight(self.coords, 'white')
Exemplo n.º 11
0
 def test_queen_can_move_behind(self):
     new_coord = Coordinates('d', 3)
     self.assertTrue(self.queen.can_move_to(new_coord))
Exemplo n.º 12
0
 def test_king_cant_move_more_than_one_tile(self):
     new_coord = Coordinates('d', 8)
     self.assertFalse(self.king.can_move_to(new_coord))
Exemplo n.º 13
0
 def setUp(self):
     self.coords = Coordinates('d', 4)
     self.king = King(self.coords, 'white')
Exemplo n.º 14
0
 def test_rook_cant_move_diagonally(self):
     new_coord = Coordinates('e', 5)
     self.assertFalse(self.rook.can_move_to(new_coord))
Exemplo n.º 15
0
 def test_king_can_move_ahead(self):
     new_coord = Coordinates('d', 5)
     self.assertTrue(self.king.can_move_to(new_coord))
Exemplo n.º 16
0
 def test_rook_can_move_to_right(self):
     new_coord = Coordinates('e', 4)
     self.assertTrue(self.rook.can_move_to(new_coord))
Exemplo n.º 17
0
 def test_rook_can_move_more_than_one_tile(self):
     new_coord = Coordinates('d', 8)
     self.assertTrue(self.rook.can_move_to(new_coord))
Exemplo n.º 18
0
 def test_rook_can_move_behind(self):
     new_coord = Coordinates('d', 3)
     self.assertTrue(self.rook.can_move_to(new_coord))
Exemplo n.º 19
0
 def test_rook_can_move_ahead(self):
     new_coord = Coordinates('d', 5)
     self.assertTrue(self.rook.can_move_to(new_coord))
Exemplo n.º 20
0
 def test_knight_cant_move_diagonally(self):
     new_coord = Coordinates('e', 5)
     self.assertFalse(self.knight.can_move_to(new_coord))
Exemplo n.º 21
0
 def test_queen_can_move_diagonally(self):
     new_coord = Coordinates('e', 5)
     self.assertTrue(self.queen.can_move_to(new_coord))
Exemplo n.º 22
0
 def test_knight_cant_move_to_the_right(self):
     new_coord = Coordinates('e', 4)
     self.assertFalse(self.knight.can_move_to(new_coord))
Exemplo n.º 23
0
 def setUp(self):
     self.coords = Coordinates('d', 4)
     self.queen = Queen(self.coords, 'white')
Exemplo n.º 24
0
 def can_move_to(self, new_coords: Coordinates):
     distance = new_coords.distance(self.coordinates)
     return any(d == 1 for d in distance) and all(d <= 1 for d in distance)
Exemplo n.º 25
0
 def test_king_can_move_behind(self):
     new_coord = Coordinates('d', 3)
     self.assertTrue(self.king.can_move_to(new_coord))
Exemplo n.º 26
0
 def test_knight_cant_move_behind(self):
     new_coord = Coordinates('d', 3)
     self.assertFalse(self.knight.can_move_to(new_coord))
Exemplo n.º 27
0
 def test_king_can_move_to_right(self):
     new_coord = Coordinates('e', 4)
     self.assertTrue(self.king.can_move_to(new_coord))
Exemplo n.º 28
0
 def setUp(self):
     self.coords = Coordinates('d', 4)
     self.pawn = Pawn(self.coords, 'white')
Exemplo n.º 29
0
 def setUp(self):
     self.coords = Coordinates('d', 4)
     self.rook = Rook(self.coords, 'white')
Exemplo n.º 30
0
 def test_knight_can_move_on_l(self):
     new_coord = Coordinates('e', 7)
     self.assertTrue(self.knight.can_move_to(new_coord))