Skip to content

Commit

Permalink
merge juan 2
Browse files Browse the repository at this point in the history
  • Loading branch information
juanmato committed Nov 9, 2024
2 parents bb40983 + 42d8552 commit d80a1ae
Show file tree
Hide file tree
Showing 8 changed files with 154 additions and 14 deletions.
56 changes: 48 additions & 8 deletions src/Library/Domain/Domain/Facade.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ public class Facade
{
private WaitingList WaitingList { get; }
public GameList GameList { get; }
private UserInterface UserInterface { get; }
private UserInterface UserInterface { get; }


private static Facade _instance;

// Este constructor privado impide que otras clases puedan crear instancias de esta.
Expand Down Expand Up @@ -166,8 +166,9 @@ public void ChoosePokemonAndMoveToAttack(string playerDisplayName, string moveNa
{
throw new Exception($"El movimiento {moveName} no está disponible para el Pokémon {pokemonName}");
}

player.ActivateMoveInActivePokemon(moveIndex);

}

//HISTORIA DE USUARIO 3
Expand Down Expand Up @@ -263,26 +264,37 @@ public string PlayerAttack(string attackerName, string defenderName, string move
double AccuaracyAttack = attacker.ActiveMove.Accuracy;

if (AccuaracyAttack < 0.5)

//double AccuaracyAttack = attackingPokemon.SpecialMoveNormal.Accuracy;

//if (AccuaracyAttack < 0.5)
{
return UserInterface.ShowMessageLowEffectiveness(AccuaracyAttack);
// return UserInterface.ShowMessageLowEffectiveness(AccuaracyAttack);
}


// if (AccuaracyAttack > 0.5)
// {
// return UserInterface.ShowMessageHighEffectiveness(AccuaracyAttack);
// }

//golpecritico
Random random = new Random();

// Generar un número aleatorio entre 1 y 100
int randomNumber = random.Next(1, 101);
double criticalHit;
double criticalHit = 0;
if (randomNumber <= 10)
{
criticalHit = 1.20;
}
else

//if (randomNumber < 10)
{
criticalHit = 1.0;
//int golpeCritico = attackingPokemon.Moves
}

//Comprobar si es un golpe crítico.
//Un golpe crítico aumenta un 20% el daño a realizar. La probabilidad de que un golpe sea crítico es del 10%.

Expand Down Expand Up @@ -334,7 +346,35 @@ public string GetCurrentTurnPlayer(string playerDisplayName)
}

//HISTORIA DE USUARIO 6


/// <summary>
/// Finaliza la batalla y muestra un mensaje indicando si el juego ha terminado o si la batalla sigue en curso.
/// Verifica el estado de los Pokémon disponibles del jugador y maneja el flujo de finalización de la batalla.
/// </summary>
/// <param name="userInterface">La instancia de la interfaz de usuario que muestra los mensajes al jugador.</param>
/// <param name="game">El objeto del juego que contiene la lógica para determinar si la batalla ha terminado.</param>
/// <param name="player">El jugador que está participando en la batalla.</param>
/// <param name="playerDisplayName">El nombre para mostrar del jugador, usado para personalizar los mensajes.</param>
/// <returns>Un mensaje que indica si la batalla ha terminado o si la batalla continúa.</returns>
/// <exception cref="ArgumentException">Se lanza si la batalla continúa y el jugador tiene solo un Pokémon disponible.</exception>
public string EndGame(UserInterface userInterface, Game game, Player player, string playerDisplayName)
{
// Verifica si el juego ha terminado (puede modificar estados internos del juego)
game.CheckIfGameEnds();
// Si el jugador no tiene Pokémon disponibles, termina la batalla y muestra el mensaje de fin de la batalla
if (player.AvailablePokemons.Count == 0)
{
return UserInterface.ShowBattleEndMessage(playerName: playerDisplayName);
}
// Si el jugador tiene un Pokémon o mas disponibles, la batalla no ha terminado
else if (player.AvailablePokemons.Count >= 1)
{
throw new ArgumentException($"La batalla continúa.");
}

return null;
}


//HISTORIA DE USUARIO 7

Expand Down
11 changes: 11 additions & 0 deletions src/Library/Domain/Domain/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,17 @@ public void ExecuteMove(Player defender, double criticalHit)
{
this.ActiveMove.ExecuteMove(this.ActivePokemon, defender.ActivePokemon, criticalHit);
}

public void TurnChanged()
{
foreach (Pokemon pokemon in this.AvailablePokemons)
{
if (pokemon.IsBurned)
{
pokemon.HealthPoints = (int)(pokemon.HealthPoints * 0.9);
}
}
}
}


3 changes: 2 additions & 1 deletion src/Library/Domain/Domain/Turn.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,12 @@ public Turn(Player player1, Player player2)
/// </summary>
public void ChangeTurn()
{

// Intercambia los jugadores
var temp = CurrentPlayer;
CurrentPlayer = WaitingPlayer;
WaitingPlayer = temp;

CurrentPlayer.TurnChanged();
}

/// <summary>
Expand Down
8 changes: 4 additions & 4 deletions src/Library/Domain/Domain/UserInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public static string ShowMessageCurrentTurnPlayer(string currentPlayerDisplayNam
/// <returns>Un mensaje formateado indicando que el ataque ocurrió.</returns>
public static string ShowMessageAttackOcurred(Pokemon attackingPokemon, Pokemon defendingPokemon, Player attacker, Player defender)
{
return $"Jugador {attacker.DisplayName} usa al Pokémon {attackingPokemon.Name} que ataca con {attacker.ActiveMove.Name} a {defendingPokemon.Name} de {defender.DisplayName}";
return $" Jugador {attacker.DisplayName} usa al Pokémon {attackingPokemon.Name} que ataca con {attacker.ActiveMove.Name} a {defendingPokemon.Name} de {defender.DisplayName}";
}

/// <summary>
Expand All @@ -182,7 +182,7 @@ public static string ShowMessageAttackOcurred(Pokemon attackingPokemon, Pokemon
/// <returns>Un mensaje formateado indicando que el ataque no ocurrió debido a un movimiento especial activo.</returns>
public static string ShowMessageAttackDidNotOccur(Player attacker, Pokemon attackingPokemon)
{
return $"El jugador {attacker} no puede jugar porque su Pokémon {attackingPokemon} tiene un ataque especial activo que no lo permite";
return $"$ El jugador {attacker} no puede jugar porque su Pokémon {attackingPokemon} tiene un ataque especial activo que no lo permite";
}

/// <summary>
Expand All @@ -193,7 +193,7 @@ public static string ShowMessageAttackDidNotOccur(Player attacker, Pokemon attac
/// <returns>Un mensaje formateado indicando la efectividad.</returns>
public static String ShowMessageHighEffectiveness(Double accuaracyAttack)

Check warning on line 194 in src/Library/Domain/Domain/UserInterface.cs

View workflow job for this annotation

GitHub Actions / build-test-generate-docs

Parameter 'accuaracyAttack' has no matching param tag in the XML comment for 'UserInterface.ShowMessageHighEffectiveness(double)' (but other parameters do)
{
return $"La efectividad del ataque es alta: {accuaracyAttack}";
return $"$ La efectividad del ataque es alta: {accuaracyAttack} ";
}

/// <summary>
Expand All @@ -204,7 +204,7 @@ public static String ShowMessageHighEffectiveness(Double accuaracyAttack)
/// <returns>Un mensaje formateado indicando la efectividad.</returns>
public static String ShowMessageLowEffectiveness(Double accuaracyAttack)
{
return $"La efectividad del ataque es baja: {accuaracyAttack}";
return $"$ La efectividad del ataque es baja: {accuaracyAttack} ";
}

}
Expand Down
1 change: 0 additions & 1 deletion src/Library/Domain/Domain/WaitingList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ public Player FindPlayerByDisplayName(string DisplayName)
return player;
}
}

return null;
}

Expand Down
12 changes: 12 additions & 0 deletions src/Library/Library.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 32 additions & 0 deletions test/LibraryTests/UserStoriesTests/UserStory2Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,37 @@ namespace ClassLibrary.Tests;
using ClassLibrary;
public class UserStory2Tests
{
[TearDown]
public void TearDown()
{
Facade.Reset();
}

private string attacker = "player1";
private string defender = "player2";
private string[] attackerPokemons = new string[] { "Blaziken", "Tinkaton", "Salamence", };
private string[] defenderPokemons = new string[] { "Tinkaton", "Zangoose", "Rayquaza", };
private string move = "Patada Ígnea";
private string move2 = "Carantoña";

[SetUp]
public void SetUp()
{
Facade.Instance.AddPlayerToWaitingList(attacker);
Facade.Instance.AddPlayerToWaitingList(defender);
Facade.Instance.StartBattle(attacker, defender);

Facade.Instance.ChoosePokemons(attacker, attackerPokemons);
Facade.Instance.ChoosePokemons(defender, defenderPokemons);
Facade.Instance.ChoosePokemonAndMoveToAttack( attacker, move, attackerPokemons[0]);
Facade.Instance.ChoosePokemonAndMoveToAttack( defender, move2, defenderPokemons[0]);
}

[Test]
public void Player_Pokemon_Receive_Special_Attack()
{
List<string> messages = Facade.Instance.ShowMoves(attacker);
Assert.That(messages.Count, Is.EqualTo(3));
Assert.That(messages[0], Does.Contain(attackerPokemons[0]));
}
}
45 changes: 45 additions & 0 deletions test/LibraryTests/UserStoriesTests/UserStory6Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,50 @@ namespace ClassLibrary.Tests;
using ClassLibrary;
public class UserStory6Tests
{
[SetUp]
public void SetUp()
{
Facade.Reset();
}
[Test]
public void Add_WaitingPlayer_To_WaitingList()
{
Player player1 = new Player(displayName: "Player 1");
Player player2 = new Player(displayName: "Player 2");

Facade.Instance.AddPlayerToWaitingList("Player 1");
Facade.Instance.AddPlayerToWaitingList("Player 2");

//Assert
Assert.That(Facade.Instance.PlayerIsWaiting("Player 1"), Is.EqualTo("Player 1 está esperando"));




}
[Test]
public void Player_Attack_Each_Other()
{
Player player1 = new Player(displayName: "Player 1");
Player player2 = new Player(displayName: "Player 2");


// Arrange
Facade.Instance.GameList.AddGame(new Player("Player1"), new Player("Player2"));
Facade.Instance.ChoosePokemons("Player1", new string[] { "Mew", "Blaziken","Tinkaton", "Salamence", "Jigglypuff" });
Facade.Instance.ChoosePokemons("Player2", new string[] { "Mew", "Blaziken","Tinkaton", "Salamence", "Jigglypuff" });
Facade.Instance.ChoosePokemonAndMoveToAttack( "Player1", "Corte", "Mew");
Facade.Instance.ChoosePokemonAndMoveToAttack("Player2", "Llamarada", "Blaziken");

// Act
string result = Facade.Instance.PlayerAttack("Player1", "Player2", "Corte");
string expected =" Jugador Player1 usa al Pokémon Mew que ataca con Corte a Blaziken de Player2";
// Assert
Assert.That(result, Is.EqualTo(expected));

}




}

0 comments on commit d80a1ae

Please sign in to comment.