diff --git a/source/Trek-12/ConsoleApp/Program.cs b/source/Trek-12/ConsoleApp/Program.cs index a9062a1..5b4bd5f 100644 --- a/source/Trek-12/ConsoleApp/Program.cs +++ b/source/Trek-12/ConsoleApp/Program.cs @@ -4,32 +4,35 @@ using Models; using Models.Game; +using Models.Rules; -Position pos01 = new Position(0,0); -Position pos02 = new Position(1,0); -Position pos03 = new Position(2,0); -Position pos04 = new Position(3,0); -Position pos05 = new Position(4,0); - -Position pos11 = new Position(0, 1); -Position pos12 = new Position(1, 1); -Position pos13 = new Position(2, 1); -Position pos14 = new Position(3, 1); -Position pos15 = new Position(4, 1); - -Position pos21 = new Position(0, 2); -Position pos22 = new Position(1, 2); -Position pos23 = new Position(2, 2); -Position pos24 = new Position(3, 2); -Position pos25 = new Position(4, 2); - -Position pos31 = new Position(0, 3); -Position pos32 = new Position(1, 3); -Position pos33 = new Position(2, 3); -Position pos34 = new Position(3,3); -Position pos35 = new Position(4, 3); - -List list = new List(); + +Cell pos01 = new Cell(0,0); +Cell pos02 = new Cell(1,0); +Cell pos03 = new Cell(2,0); +Cell pos04 = new Cell(3,0); +Cell pos05 = new Cell(4,0); + +Cell pos11 = new Cell(0, 1); +Cell pos12 = new Cell(1, 1); +Cell pos13 = new Cell(2, 1); //8 +Cell pos14 = new Cell(3, 1); +Cell pos15 = new Cell(4, 1); + +Cell pos21 = new Cell(0, 2); //8 +Cell pos22 = new Cell(1, 2); +Cell pos23 = new Cell(2, 2); +Cell pos24 = new Cell(3, 2); +Cell pos25 = new Cell(4, 2); + +Cell pos31 = new Cell(0, 3); //8 +Cell pos32 = new Cell(1, 3); +Cell pos33 = new Cell(2, 3); +Cell pos34 = new Cell(3,3); +Cell pos35 = new Cell(4, 3); + + +List list = new List(); list.Add(pos01); list.Add(pos02); list.Add(pos03); @@ -107,34 +110,82 @@ foreach (var item in list) if (i % 4 == 0) Console.Write(" |\n"); }*/ +Player p2 = new Player("Luka"); + +Game game = new Game(p2, new Map("background")); -OperationsGrid grille = new OperationsGrid(); +//game.ResultOperation(Operation.ADDITION); +//game.ResultOperation(Operation.MULTIPLICATION); +//game.ResultOperation(Operation.LOWER); +//game.ResultOperation(Operation.MULTIPLICATION); +//game.ResultOperation(Operation.MULTIPLICATION); +//game.ResultOperation(Operation.HIGHER); -grille.ResultGrid(Operation.ADDITION); -grille.ResultGrid(Operation.MULTIPLICATION); -grille.ResultGrid(Operation.LOWER); -grille.ResultGrid(Operation.MULTIPLICATION); -grille.ResultGrid(Operation.MULTIPLICATION); -grille.ResultGrid(Operation.HIGHER); +game.UsedMap.Boards = list; + +game.PlaceResult(pos02, 5); +game.PlaceResult(pos03, 5); +game.PlaceResult(pos32, 5); + +game.PlaceResult(pos31, 8); +game.PlaceResult(pos21, 8); +game.PlaceResult(pos21, 8); +game.PlaceResult(pos13, 8); int cpt = 0; -foreach (var item in grille.Tiles) +/* +foreach (var item in game.UsedMap.Boards) { Console.Write(" | "); - Console.Write(item); + Console.Write(item.Value); cpt++; if (cpt % 4 == 0) Console.Write(" |\n"); } +*/ + +for (int i = 0; i Boards { get; private set; }; + public List Boards { get; set; } public string Background { get; private set; } public List OperationGrid { get; private set; } - public List> RopePaths { get; private set; } + //public List> RopePaths { get; private set; } public List> Zones { get; private set; } @@ -17,7 +17,9 @@ public class Map Boards = new List(); Background = background; OperationGrid = new List(); - RopePaths = new List>(); + //RopePaths = new List>(); Zones = new List>(); + } + } \ No newline at end of file diff --git a/source/Trek-12/Models/Game/Player.cs b/source/Trek-12/Models/Game/Player.cs index 0695f4c..c264f47 100644 --- a/source/Trek-12/Models/Game/Player.cs +++ b/source/Trek-12/Models/Game/Player.cs @@ -6,9 +6,9 @@ public class Player public string ProfilePicture { get; private set; } - public string CreationDate { get; private set; } + public string? CreationDate { get; private set; } - public string LastPlayed { get; private set; } + public string? LastPlayed { get; private set; } public Player() { diff --git a/source/Trek-12/Models/Interfaces/IRules.cs b/source/Trek-12/Models/Interfaces/IRules.cs index 249bb51..b44e43d 100644 --- a/source/Trek-12/Models/Interfaces/IRules.cs +++ b/source/Trek-12/Models/Interfaces/IRules.cs @@ -26,12 +26,14 @@ public interface IRules public bool IsValueInZones(Cell chosenCell, List> zones); + public bool IsCellInZone(Cell chosenCell, List> zones); + public void AddToZone(Cell chosenCell, List> zones); public void NewZoneIsCreated(Cell firstCell, Cell secondCell, Map map); public List EveryAdjacentCells(Cell choosenCell, List cells); - public int FinalCalculusOfZones(List> zones); + public int? FinalCalculusOfZones(List> zones); } \ No newline at end of file diff --git a/source/Trek-12/Models/Rules/Rules.cs b/source/Trek-12/Models/Rules/Rules.cs index b5ce805..3f9d9a4 100644 --- a/source/Trek-12/Models/Rules/Rules.cs +++ b/source/Trek-12/Models/Rules/Rules.cs @@ -14,13 +14,15 @@ namespace Models.Rules { if (Math.Abs(choosenCell.X - targetCell.X) > 1 || Math.Abs(choosenCell.Y - targetCell.Y) > 1) return false; + if (Math.Abs(choosenCell.X - targetCell.X) > 1 && Math.Abs(choosenCell.Y - targetCell.Y) > 1) + return false; return true; } public bool NearCellIsValid(Cell choosenCell, List cells) { - if (choosenCell == null) return false; + if (choosenCell == null || cells == null) return false; IEnumerable PlayedCellsQuery = from cell in cells @@ -33,6 +35,8 @@ namespace Models.Rules return true; } + + return false; } public bool IsZoneValidAndAddToZones(Cell chosenCell, Map map) @@ -55,7 +59,7 @@ namespace Models.Rules { NewZoneIsCreated(chosenCell, cells, map); } - return true; // Il y a une cellule adjacente avec la même valeur donc une zone est créée si elle n'est pas déjà existante + //return true; // Il y a une cellule adjacente avec la même valeur donc une zone est créée si elle n'est pas déjà existante // Si il return true, tout c'est bien passer } } @@ -77,9 +81,25 @@ namespace Models.Rules return false; } + public bool IsCellInZone(Cell chosenCell, List> zones) + { + if (chosenCell == null) return false; + + for (int i = 0; i < zones.Count; i++) + { + if (zones[i].Contains(chosenCell)) + { + return true; + } + } + return false; + } + public void AddToZone(Cell chosenCell, List> zones) { - if (chosenCell == null) return; + if (chosenCell == null || chosenCell.Value == null) return; + + if (IsCellInZone(chosenCell, zones)) return; for (int i = 0; i < zones.Count; i++) { @@ -94,6 +114,7 @@ namespace Models.Rules public void NewZoneIsCreated(Cell firstCell, Cell secondCell, Map map) { + if (firstCell == null || secondCell == null || firstCell.Value == null || secondCell.Value == null) return; List newZone = new List(); newZone.Add(firstCell); newZone.Add(secondCell); @@ -115,9 +136,9 @@ namespace Models.Rules return adjacentCells; } - public int FinalCalculusOfZones(List> zones) + public int? FinalCalculusOfZones(List> zones) { - int calculus = 0; + int? calculus = 0; for(int i = 0; i < zones.Count; i++) { calculus += zones[i].Count * zones[i][0].Value; @@ -125,5 +146,19 @@ namespace Models.Rules return calculus; } + public bool IsBugged(Cell chosenCell, List> zones) + { + if (chosenCell == null) return false; + + for (int i = 0; i < zones.Count; i++) + { + if (zones[i].Contains(chosenCell)) + { + return true; + } + } + return false; + } + } } \ No newline at end of file