/* * Play one Kalah game with the two given players, with firstPlayer * starting. This function returns TOP's score. */ public static int playGame(Player pTop, Player pBot, Position firstPlayer) { b = new Board(firstPlayer); if (firstPlayer == Position.Top) { Console.WriteLine("Player " + pTop.getName() + " starts."); } else { Console.WriteLine("Player " + pBot.getName() + " starts."); } b.display(); while (!b.gameOver()) { Console.WriteLine(); if (b.whoseMove() == Position.Top) { move = pTop.chooseMove(b); Console.WriteLine(pTop.getName() + " chooses move " + move); } else { move = pBot.chooseMove(b); Console.WriteLine(pBot.getName() + " chooses move " + move); } b.makeMove(move, true); // last parameter says to be chatty b.display(); if (b.gameOver()) { if (b.winner() == Position.Top) { Console.WriteLine("Player " + pTop.getName() + " (TOP) wins " + b.scoreTop() + " to " + b.scoreBot()); } else if (b.winner() == Position.Bottom) { Console.WriteLine("Player " + pBot.getName() + " (BOTTOM) wins " + b.scoreBot() + " to " + b.scoreTop()); } else { Console.WriteLine("A tie!"); } } else if (b.whoseMove() == Position.Top) { Console.WriteLine(pTop.getName() + " to move."); } else { Console.WriteLine(pBot.getName() + " to move."); } } return(b.scoreTop()); }