Refacto
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
using MiniJeuxFinal.Games;
|
||||||
|
using MiniJeuxFinal.Games.PierrePapierCiseaux;
|
||||||
|
using MiniJeuxFinal.Games.PierrePapierCiseaux.Actions;
|
||||||
|
using MiniJeuxFinal.Games.PierrePapierCiseaux.Factories;
|
||||||
|
using MiniJeuxFinal.Games.PierrePapierCiseaux.Players;
|
||||||
|
using MiniJeuxFinal.Wrappers;
|
||||||
|
|
||||||
|
namespace MiniJeuxFinal.GameFactory
|
||||||
|
{
|
||||||
|
public static class PierrePapierCiseauxGameFactory
|
||||||
|
{
|
||||||
|
public static PierrePapierCiseauxGame CreateGame()
|
||||||
|
{
|
||||||
|
var consoleService = new ConsoleService();
|
||||||
|
consoleService.WriteLine("Entrer votre nom de joueur:");
|
||||||
|
var userName = consoleService.ReadLine();
|
||||||
|
consoleService.WriteLine("Entrer le nombre de round:");
|
||||||
|
var roundNumber = consoleService.ReadLine();
|
||||||
|
var player = new PlayerPpc(userName, new InputActionFactory(new ConsoleService()));
|
||||||
|
var computer = new PlayerPpc("Ordi", new RandomActionFactory());
|
||||||
|
IAction[] lstActions = [new StoneAction(), new PaperAction(), new ScissorsAction()];
|
||||||
|
player.AddAction(lstActions);
|
||||||
|
computer.AddAction(lstActions);
|
||||||
|
|
||||||
|
return new PierrePapierCiseauxGame(int.Parse(roundNumber), player, computer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,46 +1,11 @@
|
|||||||
using MiniJeuxFinal.Games;
|
using MiniJeuxFinal.GameFactory;
|
||||||
using MiniJeuxFinal.Games.PierrePapierCiseaux;
|
using MiniJeuxFinal.Ui;
|
||||||
using MiniJeuxFinal.Games.PierrePapierCiseaux.Actions;
|
|
||||||
using MiniJeuxFinal.Games.PierrePapierCiseaux.Factories;
|
|
||||||
using MiniJeuxFinal.Games.PierrePapierCiseaux.Players;
|
|
||||||
using MiniJeuxFinal.Wrappers;
|
|
||||||
|
|
||||||
class Program()
|
class Program()
|
||||||
{
|
{
|
||||||
public static void Main()
|
public static void Main()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Entrer votre nom de joueur:");
|
var runner = new GameRunnerConsole(PierrePapierCiseauxGameFactory.CreateGame());
|
||||||
var userName = Console.ReadLine();
|
runner.Run();
|
||||||
var player = new PlayerPpc(userName, new InputActionFactory(new ConsoleService()));
|
|
||||||
var computer = new PlayerPpc("Ordi", new RandomActionFactory());
|
|
||||||
IAction[] lstActions = [new StoneAction(), new PaperAction(), new ScissorsAction()];
|
|
||||||
player.AddAction(lstActions);
|
|
||||||
computer.AddAction(lstActions);
|
|
||||||
var game = new PierrePapierCiseauxGame(3, player, computer);
|
|
||||||
game.TurnStarted += (sender, tuple) =>
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Tu joues : {tuple.playerChoice}");
|
|
||||||
Console.WriteLine($"L’ordinateur joue : {tuple.computerChoice}");
|
|
||||||
};
|
|
||||||
game.TurnEnded += (sender, result) =>
|
|
||||||
{
|
|
||||||
Thread.Sleep(2000);
|
|
||||||
Console.Clear();
|
|
||||||
if (result.winner == null)
|
|
||||||
Console.WriteLine($"Egalitée !");
|
|
||||||
else
|
|
||||||
Console.WriteLine($"{result.winner.Name} gagne la manche");
|
|
||||||
Console.WriteLine();
|
|
||||||
Console.WriteLine($"Score : {result.players[0]} - {result.players[1]}");
|
|
||||||
Console.WriteLine();
|
|
||||||
};
|
|
||||||
game.GameEnded += (sender, result) =>
|
|
||||||
{
|
|
||||||
Console.WriteLine($"{result.winner.Name} AS GAGNÉ ! 🎉🎉🎉");
|
|
||||||
Console.WriteLine($"Score final : {result.winner.Score} - {result.players.FirstOrDefault(_ => _.Name != result.winner.Name)?.Score}");
|
|
||||||
};
|
|
||||||
Console.WriteLine(game.Name);
|
|
||||||
Console.WriteLine();
|
|
||||||
game.Start();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
57
Correction/MiniJeuxFinal/Ui/GameRunnerConsole.cs
Normal file
57
Correction/MiniJeuxFinal/Ui/GameRunnerConsole.cs
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
using MiniJeuxFinal.Games;
|
||||||
|
|
||||||
|
namespace MiniJeuxFinal.Ui
|
||||||
|
{
|
||||||
|
public class GameRunnerConsole
|
||||||
|
{
|
||||||
|
private readonly IGame _game;
|
||||||
|
|
||||||
|
public GameRunnerConsole(IGame game)
|
||||||
|
{
|
||||||
|
_game = game;
|
||||||
|
SetupEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetupEvents()
|
||||||
|
{
|
||||||
|
_game.TurnStarted += OnTurnStarted;
|
||||||
|
_game.TurnEnded += OnTurnEnded;
|
||||||
|
_game.GameEnded += OnGameEnded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTurnStarted(object? sender, (string playerChoice, string computerChoice) e)
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
|
||||||
|
if (e.winner == null)
|
||||||
|
Console.WriteLine("Égalité !");
|
||||||
|
else
|
||||||
|
Console.WriteLine($"{e.winner.Name} gagne la manche");
|
||||||
|
|
||||||
|
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É ! 🎉🎉🎉");
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user