Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 538b23d7 rédigé par ArKeid0s's avatar ArKeid0s
Parcourir les fichiers

Implemented methods

parent 9977cdb5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #56208 réussi
......@@ -5,18 +5,20 @@ import fr.univnantes.software_engineering.enums.Age;
import fr.univnantes.software_engineering.enums.GameState;
import fr.univnantes.software_engineering.game_server.IGameServer;
import java.util.List;
/**
* Data Transfer Object for the Game
* Contains NO CRITIC infos
*/
public class GameDTO
{
Age currentAge;
int gameTurn;
Card[] currentAgeCards;
Age currentAge;
GameState gameState;
PlayerDTO[] playersPublic;
IGameServer server;
List<Card> currentAgeCards;
List<PlayerDTO> playersPublic;
//region GETTERS/SETTERS
......@@ -40,12 +42,12 @@ public class GameDTO
this.gameTurn = gameTurn;
}
public Card[] getCurrentAgeCards()
public List<Card> getCurrentAgeCards()
{
return currentAgeCards;
}
public void setCurrentAgeCards(Card[] currentAgeCards)
public void setCurrentAgeCards(List<Card> currentAgeCards)
{
this.currentAgeCards = currentAgeCards;
}
......@@ -60,12 +62,12 @@ public class GameDTO
this.gameState = gameState;
}
public PlayerDTO[] getPlayersPublic()
public List<PlayerDTO> getPlayersPublic()
{
return playersPublic;
}
public void setPlayersPublic(PlayerDTO[] playersPublic)
public void setPlayersPublic(List<PlayerDTO> playersPublic)
{
this.playersPublic = playersPublic;
}
......
......@@ -3,9 +3,15 @@ package fr.univnantes.software_engineering.game;
import fr.univnantes.software_engineering.DTO.GameDTO;
import fr.univnantes.software_engineering.card.Card;
import fr.univnantes.software_engineering.enums.Action;
import fr.univnantes.software_engineering.enums.Age;
import fr.univnantes.software_engineering.enums.GameState;
import fr.univnantes.software_engineering.enums.Resource;
import fr.univnantes.software_engineering.player.Player;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GameManager implements IGameManager
{
......@@ -18,13 +24,27 @@ public class GameManager implements IGameManager
//region GETTERS/SETTERS
public List<Player> getPlayers()
/**
* Get the GameManager without sensible attributes
*
* @return GameDTO
*/
@Override
public GameDTO getGamePublic()
{
return players;
return game;
}
//endregion
/**
* CONSTRUCTOR
*/
public GameManager()
{
this.game = initGameDTO();
}
/**
* Add a player to the Game
*
......@@ -34,36 +54,40 @@ public class GameManager implements IGameManager
@Override
public void addPlayer(String userId, String userName)
{
Player player = new Player(userId, userName);
players.add(player);
game.getPlayersPublic().add(player.getPlayerDTO());
}
/**
* Start the game
* Remove a player from the Game
*
* @param userId Player id
*/
@Override
public void startGame()
public void removePlayer(String userId)
{
Player player = getPlayer(userId);
players.remove(player);
game.getPlayersPublic().remove(player.getPlayerDTO());
}
/**
* End the game
* Start the game
*/
@Override
public void endGame()
public void startGame()
{
//TODO: Start game
}
/**
* Get the GameManager without sensible attributes
*
* @return GameDTO
* End the game
*/
@Override
public GameDTO getGamePublic()
public void endGame()
{
return null;
//TODO: End game
}
/**
......@@ -71,12 +95,12 @@ public class GameManager implements IGameManager
*
* @param playerId The playerId
* @param card The chosen card
* @param Action The chosen action
* @param action The chosen action
*/
@Override
public void playCard(String playerId, Card card, Action Action)
public void playCard(String playerId, Card card, Action action)
{
//TODO: Play card
}
/**
......@@ -88,6 +112,150 @@ public class GameManager implements IGameManager
@Override
public Player getPlayer(String playerId)
{
for (Player player : players)
{
if (player.getPlayerDTO().getUserID() == playerId)
{
return player;
}
}
return null;
}
private GameDTO initGameDTO()
{
GameDTO game = new GameDTO();
game.setGameTurn(1);
game.setCurrentAge(Age.AGE1);
game.setGameState(GameState.WAITING);
game.setCurrentAgeCards(new ArrayList<>());
game.setPlayersPublic(new ArrayList<>());
return game;
}
private void buyResourcesFrom(String buyerId, String sellerId, Resource resource)
{
}
/**
* Start a new Age
*
* @param age
*/
private void startAge(Age age)
{
if (game.getGameTurn() == 6)
{
// Resolve conflicts
for (Player player : players)
{
fight(player.getPlayerDTO().getUserID());
}
}
}
/**
* Distribute the cards to all players
*/
private void distributeCards()
{
}
/**
* Get the player neighbors
*
* @param playerId The player you want to get neighbors from
* @return Pair of players
*/
private Map.Entry<Player, Player> getNeighbors(String playerId)
{
return null;
}
/**
* Start the next turn
*/
private void nextTurn()
{
}
/**
* Give an array of cards
*
* @param cards Array of current hand cards
*/
private void giveNeighbor(Card[] cards)
{
}
/**
* Start a fight with given player
*
* @param playerId
*/
private void fight(String playerId)
{
//more army loose point si plus fait perdre a lautre et en gagne
Player currentPlayer = getPlayer(playerId);
int currentPlayerConflictsPoints = currentPlayer.getPlayerDTO().getConflictPoints();
int currentPlayerVictoryPoints = currentPlayer.getPlayerDTO().getVictoryPoints();
int currentPlayerDefeatPoints = currentPlayer.getPlayerDTO().getDefeatPoints();
int index = players.indexOf(currentPlayer) + 1;
Player neighbor = players.get(index);
int neighborPlayerConflictsPoints = neighbor.getPlayerDTO().getConflictPoints();
int neighborPlayerVictoryPoints = neighbor.getPlayerDTO().getVictoryPoints();
int neighborPlayerDefeatPoints = neighbor.getPlayerDTO().getDefeatPoints();
// Current player has more army than his neighbor WIN
if (currentPlayerConflictsPoints > neighborPlayerConflictsPoints)
{
calculateVictoryPoints(neighbor, currentPlayerVictoryPoints, currentPlayer, neighborPlayerVictoryPoints);
}
// Current player has less army than his neighbor DEFEAT
else if(currentPlayerConflictsPoints < neighborPlayerConflictsPoints)
{
calculateVictoryPoints(currentPlayer, neighborPlayerDefeatPoints, neighbor, currentPlayerVictoryPoints);
}
}
private void calculateVictoryPoints(Player winner, int winnerPoints, Player loser, int looserPoints)
{
switch (game.getCurrentAge())
{
case AGE1:
winner.getPlayerDTO().setVictoryPoints(winnerPoints + 1);
loser.getPlayerDTO().setVictoryPoints(looserPoints - 1);
break;
case AGE2:
winner.getPlayerDTO().setVictoryPoints(winnerPoints + 3);
loser.getPlayerDTO().setVictoryPoints(looserPoints - 1);
break;
case AGE3:
winner.getPlayerDTO().setVictoryPoints(winnerPoints + 5);
loser.getPlayerDTO().setVictoryPoints(looserPoints - 1);
break;
}
}
/**
* Get leaderboard to show players points
*
* @return Map of player (Player) and their score (Integer)
*/
private Map<Player, Integer> getLeaderboard()
{
Map<Player, Integer> playerLeaderboard = new HashMap<>();
for (Player player : players)
{
playerLeaderboard.put(player, player.calculateVictoryPoints());
}
return playerLeaderboard;
}
}
......@@ -11,8 +11,6 @@ import java.util.Map;
public interface IGameManager
{
//region PUBLIC METHODS
/**
* Add a player to the Game
*
......@@ -21,6 +19,13 @@ public interface IGameManager
*/
void addPlayer(String userId, String userName);
/**
* Remove a player from the Game
*
* @param userId Player id
*/
void removePlayer(String userId);
/**
* Start the game
*/
......@@ -55,68 +60,4 @@ public interface IGameManager
*/
Player getPlayer(String playerId);
//endregion
//region PRIVATE METHODS
/**
* Buy a resource from a chosen player
*
* @param buyerId Player Id from the player you want to buy from
* @param sellerId Player Id of the buyer
* @param resource The resource to buy
*/
private void buyResourcesFrom(String buyerId, String sellerId, Resource resource) {}
/**
* Start a new Age
*
* @param age
*/
private void startAge(Age age) {}
/**
* Distribute the cards to all players
*/
private void distributeCards() {}
/**
* Get the player neighbors
*
* @param playerId The player you want to get neighbors from
* @return Pair of players
*/
private Map.Entry<Player, Player> getNeighbors(String playerId) {
return null;
}
/**
* Start the next turn
*/
private void nextTurn() {}
/**
* Give an array of cards
*
* @param cards Array of current hand cards
*/
private void giveNeighbor(Card[] cards) {}
/**
* Start a fight with given player
*
* @param playerId
*/
private void fight(String playerId) {}
/**
* Get leaderboard to show players points
*
* @return Map of player (Player) and their score (Integer)
*/
private Map<Player, Integer> getLeaderboard() {
return null;
}
//endregion
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter