Untitled
unknown
java
2 years ago
5.9 kB
8
Indexable
public void attemptMove(Board board, Character currentPlayer, char move) {
int x = currentPlayer.getPoint().getX();
int y = currentPlayer.getPoint().getY();
switch (java.lang.Character.toUpperCase(move)) {
case 'U':
x--;
break;
case 'D':
x++;
break;
case 'L':
y--;
break;
case 'R':
y++;
break;
default:
System.out.println("Invalid input pls try again ");
System.out.println("Enter you new move please ");
move = scanner.next().charAt(0);
attemptMove(this, currentPlayer, move);
return;
}
Point newPosition = new Point(x, y);
if (isValidMove(currentPlayer, newPosition)) {
// Check if there's a weapon at the new position
Weapon weaponAtNewPosition = board.getWeaponAt(newPosition);
System.out.println(weaponAtNewPosition);
if (weaponAtNewPosition != null) {
// Add the weapon to the current player's queue
currentPlayer.addWeapon(weaponAtNewPosition);
System.out.println("This is the player weapon " + currentPlayer.getWeapon());
// Remove the weapon from the board
board.setBoardPosition(newPosition, null);
}
// Check if there's an opponent character at the new position
Character opponent = board.getCharacterAt(newPosition);
if (opponent != null) {
// Resolve the encounter between the current player and the opponent
boolean doMove = resolveEncounter(currentPlayer, opponent); // Pass the current player and the opponent
if(doMove){
// Remove the current player from their current position on the board
board.setBoardPosition(currentPlayer.getPoint(), null);
// Update the current player's position
currentPlayer.setPoint(newPosition);
// Place the current player in their new position on the board
board.setBoardPosition(newPosition, currentPlayer);
}
}else{
// Remove the current player from their current position on the board
board.setBoardPosition(currentPlayer.getPoint(), null);
// Update the current player's position
currentPlayer.setPoint(newPosition);
// Place the current player in their new position on the board
board.setBoardPosition(newPosition, currentPlayer);
}
}
else
{
System.out.println("Invalid move. Please try again.");
System.out.println("Enter you new move please ");
move = scanner.next().charAt(0);
attemptMove(this, currentPlayer, move);
}
}
private boolean resolveEncounter(Character player, Character opponent) {
// Check if both players have no weapons
Point position = opponent.getPoint();
if (player.getWeapon() == null && opponent.getWeapon() == null) {
return false;// No winner, nothing happens
}
// Check if one player has no weapon
if (player.getWeapon() == null || opponent.getWeapon() == null) {
// Remove the player without a weapon from the board and the game
Weapon weapon = (player.getWeapon() != null) ? player.getWeaponQueue().remove() : opponent.getWeaponQueue().remove();
removeCharacter(player.getWeapon() == null ? player : opponent);
return true;
}
boolean playerWins = player.getWeapon().interact(opponent.getWeapon());
if (playerWins) {
System.out.println("3");
// Player wins the encounter:
// - Collect one weapon from the opponent and add it to the player's queue
Weapon opponentWeapon = opponent.getWeapon(); // Assuming you have a removeTopWeapon method
if (opponentWeapon != null) {
player.getWeaponQueue().remove();
player.addWeapon(opponentWeapon);
System.out.println("Now Player " +player.getName()+ " has " +player.getWeapon());
}
removeCharacter(opponent);
setBoardPosition(position,player);
} else {
Weapon playerWeapon = player.getWeapon(); // Assuming you have a removeTopWeapon method
if (playerWeapon != null) {
opponent.getWeaponQueue().remove();
opponent.addWeapon(playerWeapon);
System.out.println("Now Player " +opponent.getName()+ " has " +opponent.getWeapon());
}
removeCharacter(player);
this.board[opponent.getPoint().getX()][opponent.getPoint().getY()] = opponent;
}
return true;
}
public void removeCharacter(Character character) {
// Debug statement to check if the function is called
System.out.println("Removing player: " + character.getName());
playerList.remove(character);
if(currentPlayerIndex > 0) {
currentPlayerIndex--;
}
else if (currentPlayerIndex ==0)
{
currentPlayerIndex++;
}
// Print a message to indicate that the player has been removed
System.out.println("Player " + character.getName() + " has been removed from the game. ( icon : " + character.getIcon() + " )");
}Editor is loading...