static void initialize_test_gameboards()
    {
        const HOLESTATE B = HOLESTATE.has_black;
        const HOLESTATE W = HOLESTATE.has_white;
        const HOLESTATE E = HOLESTATE.is_empty;

        board1 = new Pentago_GameBoard(
            new HOLESTATE[] {
            B, B, B, E, E, E,
            W, W, W, B, B, B,
            B, B, B, W, W, W,

            W, W, W, B, B, B,
            B, B, B, W, W, W,
            W, W, W, E, E, E
        }
            , Pentago_GameBoard.whites_turn, Pentago_GameBoard.turn_state_addpiece);

        board1r = new Pentago_GameBoard(
            new HOLESTATE[] {
            B, B, B, E, E, E,
            W, W, W, B, B, B,
            B, B, B, W, W, W,

            W, W, W, B, B, B,
            B, B, B, W, W, W,
            W, W, W, E, E, E
        }
            , Pentago_GameBoard.whites_turn, Pentago_GameBoard.turn_state_rotate);
    }
Exemple #2
0
        static void initialize_test_gameboards()
        {
            const Pentago_GameBoard.hole_state B = Pentago_GameBoard.hole_state.has_black;
            const Pentago_GameBoard.hole_state W = Pentago_GameBoard.hole_state.has_white;
            const Pentago_GameBoard.hole_state E = Pentago_GameBoard.hole_state.is_empty;

            board1 = new Pentago_GameBoard(
                new Pentago_GameBoard.hole_state[] {
                B, B, B, E, E, E,
                W, W, W, B, B, B,
                B, B, B, W, W, W,

                W, W, W, B, B, B,
                B, B, B, W, W, W,
                W, W, W, E, E, E
            }
                , Pentago_GameBoard.whites_turn, Pentago_GameBoard.turn_state_addpiece);

            board1r = new Pentago_GameBoard(
                new Pentago_GameBoard.hole_state[] {
                B, B, B, E, E, E,
                W, W, W, B, B, B,
                B, B, B, W, W, W,

                W, W, W, B, B, B,
                B, B, B, W, W, W,
                W, W, W, E, E, E
            }
                , Pentago_GameBoard.whites_turn, Pentago_GameBoard.turn_state_rotate);
        }
Exemple #3
0
    static void available_diamond(HOLESTATE[] gb, int square, out int available4whites, out int available4blacks)
    {
        available4whites = 0;
        available4blacks = 0;

        HOLESTATE H10 = gb[Pentago_GameBoard.board_position_to_index(1, 0, square)];
        HOLESTATE H12 = gb[Pentago_GameBoard.board_position_to_index(1, 2, square)];
        HOLESTATE H01 = gb[Pentago_GameBoard.board_position_to_index(0, 1, square)];
        HOLESTATE H21 = gb[Pentago_GameBoard.board_position_to_index(2, 1, square)];

        /* if (H10 != HOLESTATE.has_black) available4whites++;
         * if (H12 != HOLESTATE.has_black) available4whites++;
         * if (H01 != HOLESTATE.has_black) available4whites++;
         * if (H21 != HOLESTATE.has_black) available4whites++;
         *
         * if (H10 != HOLESTATE.has_white) available4blacks++;
         * if (H12 != HOLESTATE.has_white) available4blacks++;
         * if (H01 != HOLESTATE.has_white) available4blacks++;
         * if (H21 != HOLESTATE.has_white) available4blacks++;*/

        if (H10 != HOLESTATE.has_black && H21 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H12 != HOLESTATE.has_black && H01 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H01 != HOLESTATE.has_black && H10 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H21 != HOLESTATE.has_black && H12 != HOLESTATE.has_black)
        {
            available4whites++;
        }

        if (H10 != HOLESTATE.has_white && H21 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H12 != HOLESTATE.has_white && H01 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H01 != HOLESTATE.has_white && H10 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H21 != HOLESTATE.has_white && H12 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
    }
Exemple #4
0
    static void available_mulcross(HOLESTATE[] gb, int square, out int available4whites, out int available4blacks)
    {
        available4whites = 0;
        available4blacks = 0;

        HOLESTATE H11 = gb[Pentago_GameBoard.board_position_to_index(1, 1, square)];
        HOLESTATE H00 = gb[Pentago_GameBoard.board_position_to_index(0, 0, square)];
        HOLESTATE H02 = gb[Pentago_GameBoard.board_position_to_index(0, 2, square)];
        HOLESTATE H20 = gb[Pentago_GameBoard.board_position_to_index(2, 0, square)];
        HOLESTATE H22 = gb[Pentago_GameBoard.board_position_to_index(2, 2, square)];

        bool h11w = H11 != HOLESTATE.has_black;

        if (h11w && H00 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (h11w && H02 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (h11w && H20 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (h11w && H22 != HOLESTATE.has_black)
        {
            available4whites++;
        }

        bool h11b = H11 != HOLESTATE.has_white;

        if (h11b && H00 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (h11b && H02 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (h11b && H20 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (h11b && H22 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
    }
    static void available_box2(HOLESTATE[] gb, int square, out int available4whites, out int available4blacks)
    {
        available4whites = 0;
        available4blacks = 0;

        HOLESTATE H00 = gb[Pentago_GameBoard.board_position_to_index(0, 0, square)];
        HOLESTATE H02 = gb[Pentago_GameBoard.board_position_to_index(0, 2, square)];
        HOLESTATE H20 = gb[Pentago_GameBoard.board_position_to_index(2, 0, square)];
        HOLESTATE H22 = gb[Pentago_GameBoard.board_position_to_index(2, 2, square)];
        HOLESTATE H10 = gb[Pentago_GameBoard.board_position_to_index(1, 0, square)];
        HOLESTATE H12 = gb[Pentago_GameBoard.board_position_to_index(1, 2, square)];
        HOLESTATE H01 = gb[Pentago_GameBoard.board_position_to_index(0, 1, square)];
        HOLESTATE H21 = gb[Pentago_GameBoard.board_position_to_index(2, 1, square)];

        if (H00 != HOLESTATE.has_black && H10 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H20 != HOLESTATE.has_black && H12 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H22 != HOLESTATE.has_black && H12 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H02 != HOLESTATE.has_black && H01 != HOLESTATE.has_black)
        {
            available4whites++;
        }

        if (H00 != HOLESTATE.has_white && H10 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H20 != HOLESTATE.has_white && H12 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H22 != HOLESTATE.has_white && H12 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H02 != HOLESTATE.has_white && H01 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
    }
    HOLESTATE[] get_rotated_board_90deg_anticlockwise(HOLESTATE[] board)
    {
        HOLESTATE[] newboard = new HOLESTATE[36];

        copy_square2(board, newboard, 0, 2);
        copy_square2(board, newboard, 1, 0);
        copy_square2(board, newboard, 2, 3);
        copy_square2(board, newboard, 3, 1);

        Pentago_Move rotsquares = new Pentago_Move(0, Pentago_Move.rotate_anticlockwise);

        rotsquares.move(newboard, true, Pentago_GameBoard.turn_state_rotate);
        rotsquares.square2rotate = 1; rotsquares.move(newboard, true, Pentago_GameBoard.turn_state_rotate);
        rotsquares.square2rotate = 2; rotsquares.move(newboard, true, Pentago_GameBoard.turn_state_rotate);
        rotsquares.square2rotate = 3; rotsquares.move(newboard, true, Pentago_GameBoard.turn_state_rotate);

        return(newboard);
    }
    void available_box1_v2(HOLESTATE[] gb, int square, out int available4whites, out int available4blacks, out int made4whites, out int made4blacks, out int stronglymade4whites, out int stronglymade4blacks)
    {
        available4whites    = 0;
        available4blacks    = 0;
        made4whites         = 0;
        made4blacks         = 0;
        stronglymade4whites = 0;
        stronglymade4blacks = 0;

        HOLESTATE H00 = gb[Pentago_GameBoard.board_position_to_index(0, 0, square)];
        HOLESTATE H02 = gb[Pentago_GameBoard.board_position_to_index(0, 2, square)];
        HOLESTATE H20 = gb[Pentago_GameBoard.board_position_to_index(2, 0, square)];
        HOLESTATE H22 = gb[Pentago_GameBoard.board_position_to_index(2, 2, square)];
        HOLESTATE H10 = gb[Pentago_GameBoard.board_position_to_index(1, 0, square)];
        HOLESTATE H12 = gb[Pentago_GameBoard.board_position_to_index(1, 2, square)];
        HOLESTATE H01 = gb[Pentago_GameBoard.board_position_to_index(0, 1, square)];
        HOLESTATE H21 = gb[Pentago_GameBoard.board_position_to_index(2, 1, square)];

        if (H00 != HOLESTATE.has_black && H01 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H10 != HOLESTATE.has_black && H20 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H21 != HOLESTATE.has_black && H22 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H02 != HOLESTATE.has_black && H12 != HOLESTATE.has_black)
        {
            available4whites++;
        }

        if (H00 != HOLESTATE.has_white && H01 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H10 != HOLESTATE.has_white && H20 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H21 != HOLESTATE.has_white && H22 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H02 != HOLESTATE.has_white && H12 != HOLESTATE.has_white)
        {
            available4blacks++;
        }

        if (!HEUR12RELAXED)
        {
            if (H00 == HOLESTATE.has_black && H01 == HOLESTATE.has_black)
            {
                made4blacks++; if (H02 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (H10 == HOLESTATE.has_black && H20 == HOLESTATE.has_black)
            {
                made4blacks++; if (H00 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (H21 == HOLESTATE.has_black && H22 == HOLESTATE.has_black)
            {
                made4blacks++; if (H20 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (H02 == HOLESTATE.has_black && H12 == HOLESTATE.has_black)
            {
                made4blacks++; if (H22 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }

            if (H00 == HOLESTATE.has_white && H01 == HOLESTATE.has_white)
            {
                made4whites++; if (H02 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (H10 == HOLESTATE.has_white && H20 == HOLESTATE.has_white)
            {
                made4whites++; if (H00 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (H21 == HOLESTATE.has_white && H22 == HOLESTATE.has_white)
            {
                made4whites++; if (H20 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (H02 == HOLESTATE.has_white && H12 == HOLESTATE.has_white)
            {
                made4whites++; if (H22 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
        }
        else
        {
            if ((H00 == HOLESTATE.has_black || H01 == HOLESTATE.has_black) && H00 != HOLESTATE.has_white && H01 != HOLESTATE.has_white)
            {
                made4blacks++; if (H02 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if ((H10 == HOLESTATE.has_black || H20 == HOLESTATE.has_black) && H10 != HOLESTATE.has_white && H20 != HOLESTATE.has_white)
            {
                made4blacks++; if (H00 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if ((H21 == HOLESTATE.has_black || H22 == HOLESTATE.has_black) && H21 != HOLESTATE.has_white && H22 != HOLESTATE.has_white)
            {
                made4blacks++; if (H20 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if ((H02 == HOLESTATE.has_black || H12 == HOLESTATE.has_black) && H02 != HOLESTATE.has_white && H12 != HOLESTATE.has_white)
            {
                made4blacks++; if (H22 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }

            if ((H00 == HOLESTATE.has_white || H01 == HOLESTATE.has_white) && H00 != HOLESTATE.has_black && H01 != HOLESTATE.has_black)
            {
                made4whites++; if (H02 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if ((H10 == HOLESTATE.has_white || H20 == HOLESTATE.has_white) && H10 != HOLESTATE.has_black && H20 != HOLESTATE.has_black)
            {
                made4whites++; if (H00 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if ((H21 == HOLESTATE.has_white || H22 == HOLESTATE.has_white) && H21 != HOLESTATE.has_black && H22 != HOLESTATE.has_black)
            {
                made4whites++; if (H20 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if ((H02 == HOLESTATE.has_white || H12 == HOLESTATE.has_white) && H02 != HOLESTATE.has_black && H12 != HOLESTATE.has_black)
            {
                made4whites++; if (H22 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
        }
    }
    static void available_corners_v2(HOLESTATE[] gb, int square, out int available4whites, out int available4blacks, out int made4whites, out int made4blacks)
    {
        available4whites = 0;
        available4blacks = 0;
        made4whites      = 0;
        made4blacks      = 0;

        HOLESTATE H00 = gb[Pentago_GameBoard.board_position_to_index(0, 0, square)];
        HOLESTATE H02 = gb[Pentago_GameBoard.board_position_to_index(0, 2, square)];
        HOLESTATE H20 = gb[Pentago_GameBoard.board_position_to_index(2, 0, square)];
        HOLESTATE H22 = gb[Pentago_GameBoard.board_position_to_index(2, 2, square)];

        if (H00 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H02 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H20 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (H22 != HOLESTATE.has_black)
        {
            available4whites++;
        }

        if (H00 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H02 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H20 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (H22 != HOLESTATE.has_white)
        {
            available4blacks++;
        }

        if (H00 == HOLESTATE.has_black)
        {
            made4blacks++;
        }
        if (H02 == HOLESTATE.has_black)
        {
            made4blacks++;
        }
        if (H20 == HOLESTATE.has_black)
        {
            made4blacks++;
        }
        if (H22 == HOLESTATE.has_black)
        {
            made4blacks++;
        }

        if (H00 == HOLESTATE.has_white)
        {
            made4whites++;
        }
        if (H02 == HOLESTATE.has_white)
        {
            made4whites++;
        }
        if (H20 == HOLESTATE.has_white)
        {
            made4whites++;
        }
        if (H22 == HOLESTATE.has_white)
        {
            made4whites++;
        }
    }
    void available_mulcross_v2(HOLESTATE[] gb, int square, out int available4whites, out int available4blacks, out int made4whites, out int made4blacks, out int stronglymade4whites, out int stronglymade4blacks)
    {
        available4whites    = 0;
        available4blacks    = 0;
        made4whites         = 0;
        made4blacks         = 0;
        stronglymade4whites = 0;
        stronglymade4blacks = 0;

        HOLESTATE H11 = gb[Pentago_GameBoard.board_position_to_index(1, 1, square)];
        HOLESTATE H00 = gb[Pentago_GameBoard.board_position_to_index(0, 0, square)];
        HOLESTATE H02 = gb[Pentago_GameBoard.board_position_to_index(0, 2, square)];
        HOLESTATE H20 = gb[Pentago_GameBoard.board_position_to_index(2, 0, square)];
        HOLESTATE H22 = gb[Pentago_GameBoard.board_position_to_index(2, 2, square)];

        bool h11w = H11 != HOLESTATE.has_black;

        if (h11w && H00 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (h11w && H02 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (h11w && H20 != HOLESTATE.has_black)
        {
            available4whites++;
        }
        if (h11w && H22 != HOLESTATE.has_black)
        {
            available4whites++;
        }

        bool h11b = H11 != HOLESTATE.has_white;

        if (h11b && H00 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (h11b && H02 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (h11b && H20 != HOLESTATE.has_white)
        {
            available4blacks++;
        }
        if (h11b && H22 != HOLESTATE.has_white)
        {
            available4blacks++;
        }

        bool h11hasB = H11 == HOLESTATE.has_black;

        if (!HEUR12RELAXED)
        {
            if (h11hasB && H00 == HOLESTATE.has_black)
            {
                made4blacks++; if (H22 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (h11hasB && H02 == HOLESTATE.has_black)
            {
                made4blacks++; if (H20 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (h11hasB && H20 == HOLESTATE.has_black)
            {
                made4blacks++; if (H02 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (h11hasB && H22 == HOLESTATE.has_black)
            {
                made4blacks++; if (H00 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }

            bool h11hasW = H11 == HOLESTATE.has_white;
            if (h11hasW && H00 == HOLESTATE.has_white)
            {
                made4whites++; if (H22 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (h11hasW && H02 == HOLESTATE.has_white)
            {
                made4whites++; if (H20 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (h11hasW && H20 == HOLESTATE.has_white)
            {
                made4whites++; if (H02 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (h11hasW && H22 == HOLESTATE.has_white)
            {
                made4whites++; if (H00 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
        }
        else
        {
            if (h11hasB && H00 != HOLESTATE.has_white)
            {
                made4blacks++; if (H22 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (h11hasB && H02 != HOLESTATE.has_white)
            {
                made4blacks++; if (H20 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (h11hasB && H20 != HOLESTATE.has_white)
            {
                made4blacks++; if (H02 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }
            if (h11hasB && H22 != HOLESTATE.has_white)
            {
                made4blacks++; if (H00 != HOLESTATE.has_white)
                {
                    stronglymade4blacks++;
                }
            }

            bool h11hasW = H11 != HOLESTATE.has_white;
            if (h11hasW && H00 != HOLESTATE.has_black)
            {
                made4whites++; if (H22 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (h11hasW && H02 != HOLESTATE.has_black)
            {
                made4whites++; if (H20 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (h11hasW && H20 != HOLESTATE.has_black)
            {
                made4whites++; if (H02 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
            if (h11hasW && H22 != HOLESTATE.has_black)
            {
                made4whites++; if (H00 != HOLESTATE.has_black)
                {
                    stronglymade4whites++;
                }
            }
        }
    }