/*

 * Scott St. Martin

 * Marriotts Ridge HS

 * Contest #3

 * Reg Hahne

 * Intermediate Division

 */

 

public class Senet

{

            private int[] blacks;

            private int[] whites;

           

            private int bmove;

            private int wmove;

                       

            private boolean bmoved;

            private boolean wmoved;

           

            private String[] board;

           

            public Senet(int[] b,int[] w,int bm,int wm)

            {

                        blacks = b;

                        whites = w;

                       

                        bmove = bm;

                        wmove = wm;

                       

                        bmoved = false;

                        wmoved = false;

                       

                        board = new String[30];

            }

           

            public void playGame()

            {

                        addToBoard();

                        moveBlack();

                        moveWhite();

            }

           

            public void addToBoard()

            {

                        for(int i = 0; i < board.length; i++)

                                    board[i] = "";

                       

                        for(int i = 0; i < blacks.length; i++)

                        {

                                    if(i == 0)

                                                board[blacks[i] - 1] = "BM";

                                    else

                                                board[blacks[i] - 1] = "B";

                        }

                       

                        for(int i = 0; i < whites.length; i++)

                        {

                                    if(i == 0)

                                                board[whites[i] - 1] = "WM";

                                    else

                                                board[whites[i] - 1] = "W";

                        }

            }

           

            public void moveBlack()

            {

                        bmoved = true;

                       

                        if(blackLoc() < 25 && blackLoc() + bmove >= 25 && !(board[25].equals("B")))

                        {

                                    if(board[25].equals("W"))                               

                                                board[blackLoc()] = "W";

                                    else if(board[25].equals("WM"))

                                                board[blackLoc()] = "WM";

                                    else

                                    {

                                                int temp = blackLoc();

                                                board[temp] = "";

                                    }

                                   

                                    board[25] = "BM";                            

                        }

                       

                        else if(blackLoc() == 25 && bmove == 1)

                        {

                                    if(board[26].equals("") && board[14].equals(""))

                                    {

                                                board[25] = "";

                                                board[14] = "BM";

                                    }

                                    else if(board[26].equals("B"))

                                    {

                                                board[25] = "BM";

                                    }

                                    else if(board[26].equals("W"))

                                    {

                                                if(board[14].equals("W"))

                                                {

                                                            board[26] = "W";

                                                            board[14] = "BM";

                                                            board[25] = "W";

                                                }

                                                else if(board[14].equals("WM"))

                                                {

                                                            board[26] = "WM";

                                                            board[14] = "BM";

                                                            board[25] = "W";

                                                }

                                                else if(board[14].equals("B"))

                                                {

                                                            board[26] = "BM";

                                                            board[25] = "W";

                                                }

                                                else

                                                {

                                                            board[14] = "BM";

                                                            board[25] = "W";

                                                            board[26] = "";

                                                }

                                    }

                                    else if(board[26].equals("WM"))

                                    {

                                                if(board[14].equals("W"))

                                                {

                                                            board[26] = "W";

                                                            board[14] = "BM";

                                                            board[25] = "WM";

                                                }

                                                else if(board[14].equals("B"))

                                                {

                                                            board[26] = "BM";

                                                            board[25] = "WM";

                                                }

                                                else

                                                {

                                                            board[14] = "BM";

                                                            board[25] = "WM";

                                                            board[26] = "";

                                                }

                                    }

                                    else if(board[26].equals(""))

                                    {

                                                if(board[14].equals("B"))

                                                {

                                                            board[26] = "BM";

                                                            board[25] = "";

                                                }

                                                else if(board[14].equals("W"))

                                                {

                                                            board[26] = "W";

                                                            board[14] = "BM";

                                                            board[25] = "";

                                                }

                                                else if(board[14].equals("WM"))

                                                {

                                                            board[26] = "WM";

                                                            board[14] = "BM";

                                                            board[25] = "";

                                                }

                                    }

                                    else

                                                bmoved = false;

                        }

                       

                        else if(blackLoc() == 25 && bmove == 5)

                                    board[blackLoc()] = "";                                

                        else if(blackLoc() == 26 && bmove == 4)

                                    board[blackLoc()] = "";

                        else if(blackLoc() == 27 && bmove == 3)

                                    board[blackLoc()] = "";

                        else if(blackLoc() == 28 && bmove == 2)

                                    board[blackLoc()] = "";

                        else if(blackLoc() == 29 && bmove == 1)

                                    board[blackLoc()] = "";

                       

                        else if(blackLoc() < 25)

                        {

                                    if(board[blackLoc() + bmove].equals("W"))

                                    {

                                                int temp = blackLoc();

                                               

                                                board[temp + bmove] = "BM";

                                                board[temp] = "W";    

                                    }

                                    else if(board[blackLoc() + bmove].equals("WM"))

                                    {

                                                int temp = blackLoc();

                                               

                                                board[temp + bmove] = "BM";

                                                board[temp] = "WM";

                                    }

                                    else if(!(board[blackLoc() + bmove].equals("B")))

                                    {

                                                int temp = blackLoc();

                                               

                                                board[temp] = "";

                                                board[temp + bmove] = "BM";

                                    }

                        }

                        else if(blackLoc() >= 25  && !(blackLoc() + bmove >= 30))

                        {

                                    if(board[blackLoc() + bmove].equals("W"))

                                    {

                                                int temp = blackLoc();

                                               

                                                board[temp + bmove] = "BM";

                                                board[temp] = "W";    

                                    }

                                    else if(board[blackLoc() + bmove].equals("WM"))

                                    {

                                                int temp = blackLoc();

                                               

                                                board[temp + bmove] = "BM";

                                                board[temp] = "WM";

                                    }

                                    else if(!(board[blackLoc() + bmove].equals("B")))

                                    {

                                                int temp = blackLoc();

                                               

                                                board[temp] = "";

                                                board[temp + bmove] = "BM";

                                    }

                        }

                        else

                                    bmoved = false;

            }

           

            public void moveWhite()

            {

                        wmoved = true;

                       

                        if(whiteLoc() < 25 && whiteLoc() + wmove >= 25 && !(board[25].equals("W")))

                        {

                                    if(board[25].equals("B"))                                 

                                                board[whiteLoc()] = "B";

                                    else if(board[25].equals("BM"))

                                                board[whiteLoc()] = "BM";

                                    else

                                    {

                                                int temp = whiteLoc();

                                                board[temp] = "";

                                    }

                                    board[25] = "WM";

                        }

                       

                        else if(whiteLoc() == 25 && wmove == 1)

                        {

                                    if(board[26].equals("") && board[14].equals(""))

                                    {

                                                board[25] = "";

                                                board[14] = "WM";

                                    }

                                    else if(board[26].equals("W"))

                                    {

                                                board[25] = "WM";

                                    }

                                    else if(board[26].equals("B"))

                                    {

                                                if(board[14].equals("B"))

                                                {

                                                            board[26] = "W";

                                                            board[14] = "WM";

                                                            board[25] = "B";

                                                }

                                                else if(board[14].equals("BM"))

                                                {

                                                            board[26] = "BM";

                                                            board[14] = "WM";

                                                            board[25] = "B";

                                                }

                                                else if(board[14].equals("W"))

                                                {

                                                            board[26] = "WM";

                                                            board[25] = "B";

                                                }

                                                else

                                                {

                                                            board[14] = "WM";

                                                            board[25] = "B";

                                                            board[26] = "";

                                                }

                                    }

                                    else if(board[26].equals("BM"))

                                    {

                                                if(board[14].equals("B"))

                                                {

                                                            board[26] = "B";

                                                            board[14] = "WM";

                                                            board[25] = "BM";

                                                }

                                                else if(board[14].equals("W"))

                                                {

                                                            board[26] = "WM";

                                                            board[25] = "BM";

                                                }

                                                else

                                                {

                                                            board[14] = "WM";

                                                            board[25] = "BM";

                                                            board[26] = "";

                                                }

                                    }

                                    else if(board[26].equals(""))

                                    {

                                                if(board[14].equals("W"))

                                                {

                                                            board[26] = "WM";

                                                            board[25] = "";

                                                }

                                                else if(board[14].equals("B"))

                                                {

                                                            board[26] = "B";

                                                            board[14] = "WM";

                                                            board[25] = "";

                                                }

                                                else if(board[14].equals("BM"))

                                                {

                                                            board[26] = "BM";

                                                            board[14] = "WM";

                                                            board[25] = "";

                                                }

                                    }

                        }

                       

                        else if(whiteLoc() == 25 && wmove == 5)

                                    board[whiteLoc()] = "";                                            

                        else if(whiteLoc() == 26 && wmove == 4)

                                    board[whiteLoc()] = "";

                        else if(whiteLoc() == 27 && wmove == 3)

                                    board[whiteLoc()] = "";

                        else if(whiteLoc() == 28 && wmove == 2)

                                    board[whiteLoc()] = "";

                        else if(whiteLoc() == 29 && wmove == 1)

                                    board[whiteLoc()] = "";

                       

                        else if(whiteLoc() < 25)

                        {

                                    if(board[whiteLoc() + wmove].equals("B"))

                                    {

                                                int temp = whiteLoc();

                                               

                                                board[temp + wmove] = "WM";

                                                board[temp] = "H";     

                                    }

                                    else if(board[whiteLoc() + wmove].equals("BM"))

                                    {

                                                int temp = whiteLoc();

                                               

                                                board[temp + wmove] = "WM";

                                                board[temp] = "BM";

                                    }

                                    else if(!(board[whiteLoc() + wmove].equals("W")))

                                    {

                                                int temp = whiteLoc();

                                               

                                                board[temp] = "";

                                                board[temp + wmove] = "WM";

                                    }

                        }

                        else if(whiteLoc() >= 25 && !(whiteLoc() + wmove >= 30))

                        {

                                    if(board[whiteLoc() + wmove].equals("B"))

                                    {

                                                int temp = whiteLoc();

                                               

                                                board[temp + wmove] = "WM";

                                                board[temp] = "H";     

                                    }

                                    else if(board[whiteLoc() + wmove].equals("BM"))

                                    {

                                                int temp = whiteLoc();

                                               

                                                board[temp + wmove] = "WM";

                                                board[temp] = "BM";

                                    }

                                    else if(!(board[whiteLoc() + wmove].equals("W")))

                                    {

                                                int temp = whiteLoc();

                                               

                                                board[temp] = "";

                                                board[temp + wmove] = "WM";

                                    }

                        }

                        else

                                    wmoved = false;

            }

           

            public int blackLoc()

            {

                        int loc = 0;

                       

                        for(int i = 0; i < board.length; i++)

                        {

                                    if(board[i].equals("BM"))

                                                loc = i;

                        }

                       

                        return loc;

            }

           

            public int whiteLoc()

            {

                        int loc = -1;

                       

                        for(int i = 0; i < board.length; i++)

                        {

                                    if(board[i].equals("WM"))

                                                loc = i;

                        }

                       

                        return loc;

            }

           

            public String toString()

            {

                        String helper = new String("");

                       

                        if(blackLoc() == -1)

                                    helper += "DONE,";

                        else if(bmoved == false)

                                    helper += "CANNOT MOVE,";

                        else

                                    helper += blackLoc() + 1 + ",";

                       

                        if(whiteLoc() == -1)

                                    helper += "DONE";

                        else if(wmoved == false)

                                    helper += "CANNOT MOVE";

                        else

                                    helper += 1 + whiteLoc();

                       

                        return helper;

            }