/*
* 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;
}