Ajout d'une correction possible

This commit is contained in:
Grizouille
2025-12-12 09:10:08 +01:00
parent 6e2c554af9
commit 7cec5696dc
28 changed files with 828 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
using MiniJeuxFinal.Games.PierrePapierCiseaux.Actions;
using MiniJeuxFinal.Games.PierrePapierCiseaux.Factories;
using MiniJeuxFinal.Games.PierrePapierCiseaux.Players;
using MiniJeuxFinal.Wrappers;
namespace MiniJeuxFinal.Games.PierrePapierCiseaux
{
internal class PierrePapierCiseauxGame : IGame
{
public string Name => "Jeu du Pierre, Papier, Ciseaux 🧱 📄 ✂️";
private readonly int _totalRounds;
private readonly string _playerName;
public event EventHandler<(IPlayer winner, IPlayer[] players)>? GameEnded;
public event EventHandler<(IPlayer? winner, IPlayer[] players)>? TurnEnded;
public event EventHandler<(string playerChoice, string computerChoice)>? TurnStarted;
public PierrePapierCiseauxGame(int totalRound, string playerName)
{
_totalRounds = totalRound;
_playerName = playerName;
}
public void Start()
{
IAction[] lstActions = [new StoneAction(), new PaperAction(), new ScissorsAction()];
var player = new PlayerPpc(_playerName, new InputActionFactory(new ConsoleService()));
player.AddAction(lstActions);
var computer = new PlayerPpc("Ordi", new RandomActionFactory());
computer.AddAction(lstActions);
while (player.Score < _totalRounds && computer.Score < _totalRounds)
{
var actionPLayer = (IActionPpc)player.Play();
var actionComputer = (IActionPpc)computer.Play();
TurnStarted?.Invoke(this, (actionPLayer.Name, actionComputer.Name));
if (actionPLayer.ToWin(actionComputer))
player.IncrementScore();
else if (actionComputer.ToWin(actionPLayer))
computer.IncrementScore();
else
{
TurnEnded?.Invoke(this, (null, [player, computer]));
continue;
}
TurnEnded?.Invoke(this, (actionPLayer.ToWin(actionComputer) ? player : computer, [player, computer]));
}
GameEnded?.Invoke(this, (player.Score > computer.Score ? player : computer, [player, computer]));
}
}
}