Skip to content

Commit

Permalink
finish
Browse files Browse the repository at this point in the history
  • Loading branch information
FacundoPiriz17 committed Nov 26, 2024
1 parent 23156ed commit 2f5a9a8
Show file tree
Hide file tree
Showing 11 changed files with 353 additions and 36 deletions.
2 changes: 1 addition & 1 deletion src/Library/Attack.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public Attack(string name, Type type, double accuracy, int power)
/// Genera una descripción formateada del ataque.
/// Incluye el nombre, tipo, precisión y potencia del ataque.
/// </summary>
public string InfoAttack()
public virtual string InfoAttack()
{
return $"**{this.Name}**: tipo *{this.Type}*, precisión *{this.Accuracy*100}*, potencia *{this.Power}*\n";
}
Expand Down
4 changes: 4 additions & 0 deletions src/Library/DamageCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,10 @@ public string SpecialCheck(Pokemon attackedPokemon, Attack attack)
}
return $"{attackedPokemon.Name} fue afectado con {specialAttack.SpecialEffect}\n";
}
if (attack is SpecialAttack specialAttack2)
{
specialAttack2.SetCooldown();
}
return"";
}

Expand Down
19 changes: 9 additions & 10 deletions src/Library/Facade.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

using Library.Strategies;

namespace Library;
Expand All @@ -14,12 +13,12 @@ public class Facade
/// <summary>
/// Lista de espera para jugadores que aún no están en una partida.
/// </summary>
private WaitingList WaitingList { get; set; } = new WaitingList();
private WaitingList WaitingList { get; set; }

/// <summary>
/// Lista de partidas en curso.
/// </summary>
private GameList GameList { get; } = new GameList();
private GameList GameList { get; }

/// <summary>
/// Catalogo de Pokemons.
Expand Down Expand Up @@ -234,7 +233,7 @@ public string ChooseAttack(string playerName, string attackName)
{
string result = "";
result += game.ExecuteAttack(attack);
if (result.Contains("no se puede usar hasta que pasen"))
if (result.Contains("no se puede usar hasta que pasen", StringComparison.Ordinal))
{return result;}
result += game.NextTurn();
result += CheckGameStatus(game);
Expand Down Expand Up @@ -273,8 +272,7 @@ public string CheckTurn(string playerName)
return $"{playerName}, no es tu turno";
}
}

return null;
return "No se encontró la partida.";
}

/// <summary>
Expand Down Expand Up @@ -353,13 +351,14 @@ public string ChangePokemon(string playerName, string pokemonName)
public string UseAnItem(string playerName, string item, string pokemon)
{
Player player = GameList.FindPlayerByName(playerName);
Game game = GameList.FindGameByPlayer(player);

if (player == null)
{
return $"El jugador {playerName} no está en ninguna partida.";
}


Game game = GameList.FindGameByPlayer(player);

if (game == null)
{
return "Partida inexistente.";
Expand Down Expand Up @@ -440,14 +439,14 @@ public string GetAllPlayersWaiting()
return result;
}

//
/// <summary>
/// Historia de usuario 11:
/// Crea una nueva partida entre dos jugadores, quitándolos de la lista de espera y agregando la partida a la lista de
/// juegos activos.
/// </summary>
/// <param name="playerName">Nombre del primer jugador.</param>
/// <param name="opponentName">Nombre del oponente.</param>
/// <param name="strategyStartingPlayer"> Estrategia que determinara como se va a determinar que jugador tiene el primer turno</param>
/// <returns>Mensaje <c>string</c> confirmando el inicio de la partida entre ambos jugadores.</returns>
private string CreateGame(string playerName, string opponentName, IStrategyStartingPlayer strategyStartingPlayer)
{
Expand Down
34 changes: 22 additions & 12 deletions src/Library/Game.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,22 @@ public class Game
/// </summary>
public int TurnCount { get; private set; }

public IStrategyStartingPlayer StrategyStartingPlayer { get; set; }
/// <summary>
/// Estrategia que determina de que jugador es el primer turno
/// </summary>
public IStrategyStartingPlayer StrategyStartingPlayer { get; }

private DamageCalculator GameDamageCalculator { get; set; } = new DamageCalculator();
/// <summary>
/// Calculadora de daño, encargada de realizar los cálculos de daño.
/// </summary>
private DamageCalculator GameDamageCalculator { get; } = new DamageCalculator();

/// <summary>
/// Constructor de la clase. Agrega a los jugadores a la partida y determina de forma aleatoria cual comienza la partida. Inicializa el contador de turnos en 0.
/// Constructor de la clase. Agrega a los jugadores a la partida y según su estrategia determinará cuál de los jugadores tiene el primer turno. Inicializa el contador de turnos en 0.
/// </summary>
/// <param name="player1"> Primer jugador.</param>
/// <param name="player2"> Segundo jugador.</param>
/// <param name="strategyStartingPlayer"> Estrategia que determinara como se va a determinar que jugador tiene el primer turno</param>
public Game(Player player1, Player player2, IStrategyStartingPlayer strategyStartingPlayer)
{
this.Players.Add(player1);
Expand Down Expand Up @@ -121,6 +128,10 @@ public void CooldownCheck()
}
}

/// <summary>
/// Método que se encarga de verificar si los pokemones de los jugadores tienen los estados <c>Burned</c> (Quemado) o <c>Poisoned</c> (Envenenado )
/// </summary>
/// <returns> <c>string</c> indicando </returns>
public string SpecialEffectExecute()
{
string result = "";
Expand All @@ -137,14 +148,13 @@ public string SpecialEffectExecute()
player.ActivePokemon.EditState(null);
if (player.SetActivePokemon())
{
return result += $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforeBurnedEffect-pokemon.CurrentLife)}HP por estar {State.Burned}.\n" + $"PERECIÓ :'( \n\n{player.ActivePokemon.Name} es el nuevo Pokemon activo de {player.Name}\n";;
return $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforeBurnedEffect-pokemon.CurrentLife)}HP por estar {State.Burned}.\n" + $"PERECIÓ :'( \n\n{player.ActivePokemon.Name} es el nuevo Pokemon activo de {player.Name}\n";
}

return result += $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforeBurnedEffect - pokemon.CurrentLife)}HP por estar {State.Burned}.\n" + "PERECIÓ :'( \n";
return $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforeBurnedEffect - pokemon.CurrentLife)}HP por estar {State.Burned}.\n" + "PERECIÓ :'( \n";
}

return result +=
$"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforeBurnedEffect - pokemon.CurrentLife)}HP por estar {State.Burned}.\n";
return $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforeBurnedEffect - pokemon.CurrentLife)}HP por estar {State.Burned}.\n";
}

if (pokemon.CurrentState == State.Poisoned)
Expand All @@ -156,12 +166,12 @@ public string SpecialEffectExecute()
Players[ActivePlayer].ActivePokemon.EditState(null);
if (Players[ActivePlayer].SetActivePokemon())
{
return result += $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforePoisonedEffect-pokemon.CurrentLife)}HP por estar {State.Poisoned}.\n" + $"PERECIÓ :'( \n\n {player.ActivePokemon.Name} es el nuevo Pokemon activo de {player.Name}\n";;
return $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforePoisonedEffect-pokemon.CurrentLife)}HP por estar {State.Poisoned}.\n" + $"PERECIÓ :'( \n\n {player.ActivePokemon.Name} es el nuevo Pokemon activo de {player.Name}\n";
}
return result += $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforePoisonedEffect - pokemon.CurrentLife)}HP por estar {State.Poisoned}.\n" + "PERECIÓ :'( \n";
return $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforePoisonedEffect - pokemon.CurrentLife)}HP por estar {State.Poisoned}.\n" + "PERECIÓ :'( \n";
}

return result += $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforePoisonedEffect - pokemon.CurrentLife)}HP por estar {State.Poisoned}.\n";
return $"El {pokemon.Name} de {player.Name} perdió {(int)(lifeBeforePoisonedEffect - pokemon.CurrentLife)}HP por estar {State.Poisoned}.\n";
}
}
}
Expand Down Expand Up @@ -246,7 +256,7 @@ public string UseItem(IItem? item, Pokemon? pokemon)
}

string message = item.Use(pokemon);
if (message.Contains("éxito"))
if (message.Contains("éxito", StringComparison.Ordinal))
{
player.GetItemList().Remove(item);
}
Expand Down Expand Up @@ -289,7 +299,7 @@ public string ChangePokemon(Pokemon? pokemon)
/// </summary>
/// <param name="checkPlayer"> El jugador a buscar</param>
/// <returns> <c>true</c> si lo encontró, <c>false</c> en caso contrario </returns>
public bool CheckPlayerInGame(Player checkPlayer)
public bool CheckPlayerInGame(Player? checkPlayer)
{
if (checkPlayer != null)
{
Expand Down
1 change: 1 addition & 0 deletions src/Library/GameList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class GameList
/// </summary>
/// <param name="player1"> Jugador 1.</param>
/// <param name="player2"> Jugador 2.</param>
/// <param name="strategyStartingPlayer"> Estrategia que determinara como se va a determinar que jugador tiene el primer turno.</param>
/// <returns>La partida agregada.</returns>
public Game AddGame(Player player1, Player player2, IStrategyStartingPlayer strategyStartingPlayer)
{
Expand Down
Loading

0 comments on commit 2f5a9a8

Please sign in to comment.