Refacto / Tests

This commit is contained in:
Grizouille
2025-12-13 17:06:40 +01:00
parent 1001fc3420
commit 31544bd04b
10 changed files with 475 additions and 43 deletions

View File

@@ -1,57 +1,68 @@
using MiniJeuxFinal.Games;
using MiniJeuxFinal.Wrappers;
namespace MiniJeuxFinal.Ui
{
public class GameRunnerConsole
public class GameRunnerConsole : IDisposable
{
private readonly IGame _game;
private readonly IConsole _console;
public GameRunnerConsole(IGame game)
public GameRunnerConsole(IConsole console, IGame game)
{
_console = console;
_game = game;
SetupEvents();
}
private void SetupEvents()
{
_game.TurnStarted += OnTurnStarted;
_game.TurnEnded += OnTurnEnded;
_game.GameEnded += OnGameEnded;
}
public void Dispose()
{
_game.TurnStarted -= OnTurnStarted;
_game.TurnEnded -= OnTurnEnded;
_game.GameEnded -= OnGameEnded;
}
public void Run()
{
_console.WriteLine(_game.Name);
_console.WriteLine();
_game.Start();
}
private void OnTurnStarted(object? sender, (string playerChoice, string computerChoice) e)
{
Console.WriteLine($"Tu joues : {e.playerChoice}");
Console.WriteLine($"L'ordinateur joue : {e.computerChoice}");
_console.WriteLine($"Tu joues : {e.playerChoice}");
_console.WriteLine($"L'ordinateur joue : {e.computerChoice}");
}
private void OnTurnEnded(object? sender, (IPlayer? winner, IPlayer[] players) e)
{
Thread.Sleep(2000);
Console.Clear();
_console.Clear();
if (e.winner == null)
Console.WriteLine("Égalité !");
_console.WriteLine("Égalité !");
else
Console.WriteLine($"{e.winner.Name} gagne la manche");
_console.WriteLine($"{e.winner.Name} gagne la manche");
Console.WriteLine();
Console.WriteLine($"Score : {e.players[0]} - {e.players[1]}");
Console.WriteLine();
_console.WriteLine();
_console.WriteLine($"Score : {e.players[0]} - {e.players[1]}");
_console.WriteLine();
}
private void OnGameEnded(object? sender, (IPlayer winner, IPlayer[] players) e)
{
Console.WriteLine($"{e.winner.Name} A GAGNÉ ! 🎉🎉🎉");
_console.WriteLine($"{e.winner.Name} A GAGNÉ ! 🎉🎉🎉");
var loser = e.players.First(p => p.Name != e.winner.Name);
Console.WriteLine($"Score final : {e.winner.Score} - {loser.Score}");
}
public void Run()
{
Console.WriteLine(_game.Name);
Console.WriteLine();
_game.Start();
_console.WriteLine($"Score final : {e.winner.Score} - {loser.Score}");
}
}
}