diff --git a/source/Trek-12/ConsoleApp/Program.cs b/source/Trek-12/ConsoleApp/Program.cs index 1e01d72..bd9f6ae 100644 --- a/source/Trek-12/ConsoleApp/Program.cs +++ b/source/Trek-12/ConsoleApp/Program.cs @@ -14,6 +14,9 @@ namespace ConsoleApp; class Program { + + static Game Game { get; set; } + /// /// Main function of the console app /// @@ -28,21 +31,21 @@ class Program Player player = new Player(pseudo, "test.png"); Map map = new Map("Dunai","background"); - Game game = new Game(persistence); + Game = new Game(persistence); // Abonnement aux événements - game.GameStarted += OnGameStarted!; - game.GameEnded += OnGameEnded!; - game.BoardUpdated += OnBoardUpdated!; - game.DiceRolled += OnDiceRolled!; - game.OperationChosen += OnOperationChosen!; - game.CellChosen += OnCellChosen!; - game.PlayerChooseOp += OnPlayerSelectionOp!; - game.PlayerOption += OnPlayerOption!; - game.PlayerChooseCell += OnPlayerSelectionCell!; + Game.GameStarted += OnGameStarted!; + Game.GameEnded += OnGameEnded!; + Game.BoardUpdated += OnBoardUpdated!; + Game.DiceRolled += OnDiceRolled!; + Game.OperationChosen += OnOperationChosen!; + Game.CellChosen += OnCellChosen!; + Game.PlayerChooseOp += OnPlayerSelectionOp!; + Game.PlayerOption += OnPlayerOption!; + Game.PlayerChooseCell += OnPlayerSelectionCell!; // Initialisation - game.InitializeGame(map, player); + Game.InitializeGame(map, player); } @@ -75,7 +78,7 @@ class Program continue; } - e.Cell = new Cell(row, column); + Game.PlayerCell = new Cell(row, column); break; } } @@ -86,11 +89,14 @@ class Program if(e.Turn != 1) { IEnumerable PlayedCellsQuery = - from cell in e.Board + from cell in e.Board + where cell.Valid == true where cell.Value != null select cell; foreach (var item in e.Board) { + if (item.X == 6) + Console.WriteLine(); if (!item.Valid) Console.Write(" "); else if (item.Value != null) @@ -108,6 +114,7 @@ class Program } } } + return; } foreach (var item in e.Board) { @@ -134,16 +141,18 @@ class Program Console.WriteLine(); DisplayOperationTable(((Game)sender).UsedMap.OperationGrid.ToList()); Console.WriteLine(); - Console.WriteLine("1. Lower | 2. Higher | 3. Substraction | 4. Addition | 5. Multiplication"); + Console.WriteLine("0. Lower | 1. Higher | 2. Substraction | 3. Addition | 4. Multiplication"); string? op = Console.ReadLine(); - while (op != "1" && op != "2" && op != "3" && op != "4" && op != "5") + while (op != "0" && op != "1" && op != "2" && op != "3" && op != "4") { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid operation. Please choose again."); Console.ResetColor(); op = Console.ReadLine(); } - e.Operation = 3; + int test = Convert.ToInt32(op); + Game.PlayerOperation = (Operation)test; + } @@ -179,11 +188,9 @@ class Program { if (!item.Valid) Console.Write(" "); - else - { + else if (item.Value != null) Console.Write($"{item.Value}"); - - } + else Console.Write("O"); if (item.X == 6) Console.WriteLine(); } diff --git a/source/Trek-12/Models/Events/PlayerChooseOperationEventArgs.cs b/source/Trek-12/Models/Events/PlayerChooseOperationEventArgs.cs index a1b0a80..ccbcd6b 100644 --- a/source/Trek-12/Models/Events/PlayerChooseOperationEventArgs.cs +++ b/source/Trek-12/Models/Events/PlayerChooseOperationEventArgs.cs @@ -9,11 +9,11 @@ namespace Models.Events { public class PlayerChooseOperationEventArgs : EventArgs { - public int Operation { get; set; } + public Operation PlayerOp { get; set; } - public PlayerChooseOperationEventArgs(int op) + public PlayerChooseOperationEventArgs(Operation op) { - Operation = op; + PlayerOp = op; } } } diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs index 482a5cf..ec73759 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -105,6 +105,10 @@ namespace Models.Game [DataMember] public int Turn { get; private set; } + public Operation PlayerOperation { get; set; } + + public Cell PlayerCell { get; set; } + public Rules.Rules GameRules { get; } @@ -285,10 +289,10 @@ namespace Models.Game where cell.Value == null where cell.Valid == true select cell; - foreach (var item in ValidCell) - { - if(item.X == playerChoice.X && item.Y == playerChoice.Y) - item.Value = result; + foreach (var item in ValidCell) + { + if(item.X == playerChoice.X && item.Y == playerChoice.Y) + item.Value = result; } } @@ -378,35 +382,31 @@ namespace Models.Game RollAllDice(); res = PlayerChooseOperation(); PlayerOption?.Invoke(this,new PlayerOptionEventArgs(UsedMap.Boards.ToList(),res,turn)); - cell = PlayerCell(); - PlaceResult(cell,res); + PlayerSelectionCell(); + PlaceResult(PlayerCell,res); BoardUpdated?.Invoke(this, new BoardsUpdateEventArgs(UsedMap.Boards.ToList())); - + turn++; } } public int PlayerChooseOperation() { - int operation=0; - PlayerChooseOp?.Invoke(this, new PlayerChooseOperationEventArgs(operation)); - while(!GameRules.OperationAvailable(operation,UsedMap.OperationGrid.ToList())) + PlayerChooseOp?.Invoke(this, new PlayerChooseOperationEventArgs(PlayerOperation)); + while(!GameRules.OperationAvailable(PlayerOperation,UsedMap.OperationGrid.ToList())) { - PlayerChooseOp?.Invoke(this, new PlayerChooseOperationEventArgs(operation)); + PlayerChooseOp?.Invoke(this, new PlayerChooseOperationEventArgs(PlayerOperation)); } - MarkOperationAsChecked((Operation)operation); - return ResultOperation((Operation)operation); + return ResultOperation(PlayerOperation); } - public Cell PlayerCell() + public void PlayerSelectionCell() { - Cell ?playerCell = new Cell(1,0); - playerCell.Valid = true; - PlayerChooseCell?.Invoke(this,new PlayerChooseCellEventArgs(playerCell)); - while(!GameRules.NearCellIsValid(playerCell,UsedMap.Boards.ToList())) + PlayerChooseCell?.Invoke(this,new PlayerChooseCellEventArgs(PlayerCell)); + while(!GameRules.NearCellIsValid(PlayerCell,UsedMap.Boards.ToList())) { - PlayerChooseCell?.Invoke(this, new PlayerChooseCellEventArgs(playerCell)); + PlayerChooseCell?.Invoke(this, new PlayerChooseCellEventArgs(PlayerCell)); } - return playerCell; + MarkOperationAsChecked(PlayerOperation); } /// diff --git a/source/Trek-12/Models/Rules/Rules.cs b/source/Trek-12/Models/Rules/Rules.cs index 9ef5e82..7b73de9 100644 --- a/source/Trek-12/Models/Rules/Rules.cs +++ b/source/Trek-12/Models/Rules/Rules.cs @@ -54,10 +54,7 @@ namespace Models.Rules { if (Math.Abs(choosenCell.X - targetCell.X) <= 1 && Math.Abs(choosenCell.Y - targetCell.Y) <= 1) { - if (choosenCell.X != targetCell.X || choosenCell.Y != targetCell.Y) - { return true; - } } return false; @@ -118,9 +115,8 @@ namespace Models.Rules if (choosenCell.X == cell.X && choosenCell.Y == cell.Y && cell.Value == null) return true; if (IsCellAdjacent(choosenCell, cell)) - { return true; - } + } return false; @@ -258,16 +254,16 @@ namespace Models.Rules return score; } - public bool OperationAvailable(int operation,List operationGrid) + public bool OperationAvailable(Operation operation,List operationGrid) { IEnumerable row = from cell in operationGrid - where cell.Y == operation + where cell.Y == (int)operation select cell; - foreach (var item in row) - { - if (!item.IsChecked) - return true; + foreach (var item in row) + { + if (!item.IsChecked) + return true; } return false; }