i ll send u a question based on checking cheks in chess
try coding that in python ,
here is the question,

Problem 2: Check for Checks;
Source Module: checkChessCheck
Test Module: checkT est
Given a board position in chess, check if either the white king or the black
king is under check from one of the opposite color pieces.
• Input: A legal board position in chess — this is given as a list of lists
where both the main list and the sublists, each has exactly 8 elements.
Each sublist represents a row of the chess board. At the beginning of the
game the black pieces would have occupied rows 0 and 1 and the white
pieces would have occupied rows 6 and 7. White pieces are named with
upper case letters and black pieces with lower case. The alphabets used
for the different chess pieces are given below:
1. .: Blank (unoccupied) square
2. k, K: King
2
3. p, P: Pawn
4. b, B: Bishop
5. n, N: Knight
6. r, R: Rook
7. q, Q: Queen
• Output: A tuple (k, attacker, attacker_x, attacker_y) that gives
the king (black or white) which is under check, the identity of the attacker
and position of the attacker x - row, y - col). If no king is under attack in
the current board position then output None.

import unittest
from testgenDecorator import for_examples
from checkChessCheck import check_check, check_knight_attack, find_kings, check_pawn_attack

class TestChessCheck(unittest.TestCase):

    @for_examples(([['r','n','b','q','k','b','n','r'],
                    ['p','p','p','p','p','p','p','p'],
                    ['.','.','.','.','.','.','.','.'],
                    ['.','.','.','.','.','.','.','.'],
                    ['.','.','.','.','.','.','.','.'],
                    ['.','.','.','.','.','.','.','.'],
                    ['P','P','P','P','P','P','P','P'],
                    ['R','N','B','Q','K','B','N','R']], (0,4), (7,4), None),

                  ([['r','.','b','q','k','b','n','r'],
                    ['p','p','p','p','.','p','p','p'],
                    ['.','.','n','.','.','.','.','.'],
                    ['.','.','.','.','p','.','.','.'],
                    ['.','.','.','.','P','.','.','.'],
                    ['.','.','.','.','.','N','.','.'],
                    ['P','P','P','P','.','P','P','P'],
                    ['R','N','B','Q','K','B','.','R']], (0,4), (7,4), None))
    def testNoCheck(self, board, black_king, white_king, knight_check):
        '''
        Test for knight checks
        '''
        kings = find_kings(board)
        self.assertEqual(kings['k'], black_king)
        self.assertEqual(kings['K'], white_king)
        check = check_check(board)
        self.assertEqual(check, knight_check)

    @for_examples(([['.','.','.','r','k','b','.','r'],
                    ['.','.','N','.','.','p','p','.'],
                    ['p','.','P','p','.','.','.','p'],
                    ['.','p','n','.','.','P','.','.'],
                    ['.','.','.','.','.','.','.','.'],
                    ['.','.','.','.','P','.','.','.'],
                    ['P','.','.','.','.','.','P','P'],
                    ['R','.','.','.','.','R','K','.']], (0,4), (7,6), ('k','N', 1, 2)),

                  ([['.','.','.','.','.','.','.','.'],
                    ['.','.','.','k','.','.','.','.'],
                    ['.','p','n','.','p','.','.','.'],
                    ['.','p','.','.','P','p','.','.'],
                    ['.','.','.','K','.','P','.','.'],
                    ['.','R','.','.','.','.','.','R'],
                    ['P','P','.','.','.','.','.','.'],
                    ['.','.','B','.','.','.','.','.']], (1,3), (4,3), ('K','n', 2, 2)))
    def testKnightCheck(self, board, black_king, white_king, knight_check):
        '''
        Test for knight checks
        '''
        kings = find_kings(board)
        self.assertEqual(kings['k'], black_king)
        self.assertEqual(kings['K'], white_king)
        check = check_check(board)
        self.assertEqual(check, knight_check)

    @for_examples(([['r','n','b','q','.','b','n','r'],
                    ['p','p','p','p','p','.','.','.'],
                    ['.','.','.','.','.','.','p','.'],
                    ['.','.','.','.','.','.','.','k'],
                    ['.','.','.','.','.','Q','P','p'],
                    ['.','.','.','.','P','.','.','.'],
                    ['P','P','P','P','.','P','.','P'],
                    ['R','N','B','.','K','.','N','R']], (3,7), (7,4), ('k','P', 4, 6)))
    def testPawnCheck(self, board, black_king, white_king, pawn_check):
        '''
        Test for knight checks
        '''
        kings = find_kings(board)
        self.assertEqual(kings['k'], black_king)
        self.assertEqual(kings['K'], white_king)
        check = check_check(board)
        self.assertEqual(check, pawn_check)

    @for_examples(([['r','n','.','.','b','r','k','.'],
                    ['.','.','.','.','.','p','p','p'],
                    ['.','.','p','.','p','.','.','.'],
                    ['p','p','q','P','.','.','.','.'],
                    ['P','n','p','.','P','.','N','.'],
                    ['N','.','.','.','.','P','P','.'],
                    ['.','P','.','Q','.','.','B','P'],
                    ['R','.','.','R','.','.','K','.']], (0,6), (7,6), ('K','q', 3, 2)))
    def testQueenCheck(self, board, black_king, white_king, pawn_check):
        '''
        Test for knight checks
        '''
        kings = find_kings(board)
        self.assertEqual(kings['k'], black_king)
        self.assertEqual(kings['K'], white_king)
        check = check_check(board)
        self.assertEqual(check, pawn_check)

if __name__ == "__main__":


        import unittest
    from testgenDecorator import for_examples
    from checkChessCheck import check_check, check_knight_attack, find_kings, check_pawn_attack

    class TestChessCheck(unittest.TestCase):

        @for_examples(([['r','n','b','q','k','b','n','r'],
                        ['p','p','p','p','p','p','p','p'],
                        ['.','.','.','.','.','.','.','.'],
                        ['.','.','.','.','.','.','.','.'],
                        ['.','.','.','.','.','.','.','.'],
                        ['.','.','.','.','.','.','.','.'],
                        ['P','P','P','P','P','P','P','P'],
                        ['R','N','B','Q','K','B','N','R']], (0,4), (7,4), None),

                      ([['r','.','b','q','k','b','n','r'],
                        ['p','p','p','p','.','p','p','p'],
                        ['.','.','n','.','.','.','.','.'],
                        ['.','.','.','.','p','.','.','.'],
                        ['.','.','.','.','P','.','.','.'],
                        ['.','.','.','.','.','N','.','.'],
                        ['P','P','P','P','.','P','P','P'],
                        ['R','N','B','Q','K','B','.','R']], (0,4), (7,4), None))
        def testNoCheck(self, board, black_king, white_king, knight_check):
            '''
            Test for knight checks
            '''
            kings = find_kings(board)
            self.assertEqual(kings['k'], black_king)
            self.assertEqual(kings['K'], white_king)
            check = check_check(board)
            self.assertEqual(check, knight_check)

        @for_examples(([['.','.','.','r','k','b','.','r'],
                        ['.','.','N','.','.','p','p','.'],
                        ['p','.','P','p','.','.','.','p'],
                        ['.','p','n','.','.','P','.','.'],
                        ['.','.','.','.','.','.','.','.'],
                        ['.','.','.','.','P','.','.','.'],
                        ['P','.','.','.','.','.','P','P'],
                        ['R','.','.','.','.','R','K','.']], (0,4), (7,6), ('k','N', 1, 2)),

                      ([['.','.','.','.','.','.','.','.'],
                        ['.','.','.','k','.','.','.','.'],
                        ['.','p','n','.','p','.','.','.'],
                        ['.','p','.','.','P','p','.','.'],
                        ['.','.','.','K','.','P','.','.'],
                        ['.','R','.','.','.','.','.','R'],
                        ['P','P','.','.','.','.','.','.'],
                        ['.','.','B','.','.','.','.','.']], (1,3), (4,3), ('K','n', 2, 2)))
        def testKnightCheck(self, board, black_king, white_king, knight_check):
            '''
            Test for knight checks
            '''
            kings = find_kings(board)
            self.assertEqual(kings['k'], black_king)
            self.assertEqual(kings['K'], white_king)
            check = check_check(board)
            self.assertEqual(check, knight_check)

        @for_examples(([['r','n','b','q','.','b','n','r'],
                        ['p','p','p','p','p','.','.','.'],
                        ['.','.','.','.','.','.','p','.'],
                        ['.','.','.','.','.','.','.','k'],
                        ['.','.','.','.','.','Q','P','p'],
                        ['.','.','.','.','P','.','.','.'],
                        ['P','P','P','P','.','P','.','P'],
                        ['R','N','B','.','K','.','N','R']], (3,7), (7,4), ('k','P', 4, 6)))
        def testPawnCheck(self, board, black_king, white_king, pawn_check):
            '''
            Test for knight checks
            '''
            kings = find_kings(board)
            self.assertEqual(kings['k'], black_king)
            self.assertEqual(kings['K'], white_king)
            check = check_check(board)
            self.assertEqual(check, pawn_check)

        @for_examples(([['r','n','.','.','b','r','k','.'],
                        ['.','.','.','.','.','p','p','p'],
                        ['.','.','p','.','p','.','.','.'],
                        ['p','p','q','P','.','.','.','.'],
                        ['P','n','p','.','P','.','N','.'],
                        ['N','.','.','.','.','P','P','.'],
                        ['.','P','.','Q','.','.','B','P'],
                        ['R','.','.','R','.','.','K','.']], (0,6), (7,6), ('K','q', 3, 2)))
        def testQueenCheck(self, board, black_king, white_king, pawn_check):
            '''
            Test for knight checks
            '''
            kings = find_kings(board)
            self.assertEqual(kings['k'], black_king)
            self.assertEqual(kings['K'], white_king)
            check = check_check(board)
            self.assertEqual(check, pawn_check)

    if __name__ == "__main__":
        unittest.main()

Recommended Answers

All 3 Replies

What's your question?

What exactly your question fella?

So, What is your question?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.