Refacto / Tests
This commit is contained in:
@@ -9,9 +9,8 @@ namespace MiniJeuxFinal.GameFactory
|
||||
{
|
||||
public static class PierrePapierCiseauxGameFactory
|
||||
{
|
||||
public static PierrePapierCiseauxGame CreateGame()
|
||||
public static PierrePapierCiseauxGame CreateGame(IConsole consoleService)
|
||||
{
|
||||
var consoleService = new ConsoleService();
|
||||
consoleService.WriteLine("Entrer votre nom de joueur:");
|
||||
var userName = consoleService.ReadLine();
|
||||
consoleService.WriteLine("Entrer le nombre de round:");
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace MiniJeuxFinal.Games.PierrePapierCiseaux
|
||||
var actionComputer = (IActionPpc)_computer.Play();
|
||||
TurnStarted?.Invoke(this, (actionPLayer.Name, actionComputer.Name));
|
||||
|
||||
if (actionPLayer.ToWin(actionComputer) && actionComputer.ToWin(actionPLayer))
|
||||
if (actionPLayer.ToWin(actionComputer) == actionComputer.ToWin(actionPLayer))
|
||||
return null;
|
||||
|
||||
if (actionPLayer.ToWin(actionComputer))
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
using MiniJeuxFinal.GameFactory;
|
||||
using MiniJeuxFinal.Ui;
|
||||
using MiniJeuxFinal.Wrappers;
|
||||
|
||||
class Program()
|
||||
{
|
||||
public static void Main()
|
||||
{
|
||||
var runner = new GameRunnerConsole(PierrePapierCiseauxGameFactory.CreateGame());
|
||||
var consoleService = new ConsoleService();
|
||||
var game = PierrePapierCiseauxGameFactory.CreateGame(consoleService);
|
||||
var runner = new GameRunnerConsole(consoleService, game);
|
||||
runner.Run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,15 @@
|
||||
{
|
||||
internal class ConsoleService : IConsole
|
||||
{
|
||||
public void Clear() =>
|
||||
Console.Clear();
|
||||
|
||||
public string? ReadLine() =>
|
||||
Console.ReadLine();
|
||||
|
||||
public void WriteLine() =>
|
||||
Console.WriteLine();
|
||||
|
||||
public void WriteLine(string message) =>
|
||||
Console.WriteLine(message);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
{
|
||||
string? ReadLine();
|
||||
|
||||
void Clear();
|
||||
|
||||
void WriteLine();
|
||||
|
||||
void WriteLine(string message);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user