diff --git a/Qwirkle/QwirkleClassLibrary/Game.cs b/Qwirkle/QwirkleClassLibrary/Game.cs index 35b479d..f6b6983 100644 --- a/Qwirkle/QwirkleClassLibrary/Game.cs +++ b/Qwirkle/QwirkleClassLibrary/Game.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,16 +12,18 @@ namespace QwirkleClassLibrary public class Game { private TileBag bag; - private List players; private bool gameRunning; private Board board; + public ReadOnlyCollection PlayerList { get; private set; } + private readonly List players = new List(); + public Game() { - this.players = new List(); board = new Board(); bag = new TileBag(3); gameRunning = false; + PlayerList = players.AsReadOnly(); } public bool AddPlayerInGame(string? PlayerTag) @@ -80,17 +83,15 @@ namespace QwirkleClassLibrary get { return players.Count; } } - public List ListTilesBag - { - get { return bag.TilesInBag(); } - } - + // a passer en program cs public string ShowTileOfPlayer(int posplayer) { - List tiles = players[posplayer].Tiles; + List tiles = players[posplayer].Tiles.ToList(); string r = ("Tile of " + posplayer + " : "); + StringBuilder stringBuilder = new StringBuilder(); // A UTILISER !!! + foreach (Tile tile in tiles) { r = (r + " " + tile.NameColorTile()); @@ -121,7 +122,7 @@ namespace QwirkleClassLibrary { for (int j = 0; j < 6; j++) { - Tile tile = ListTilesBag[j]; + Tile tile = bag.TilesBag[j]; players[i].AddTilePlayer(tile); bag.RemoveTileInBag(tile); } diff --git a/Qwirkle/QwirkleClassLibrary/Player.cs b/Qwirkle/QwirkleClassLibrary/Player.cs index 3aaab70..53295c6 100644 --- a/Qwirkle/QwirkleClassLibrary/Player.cs +++ b/Qwirkle/QwirkleClassLibrary/Player.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,12 +10,18 @@ namespace QwirkleClassLibrary public class Player { private string nameTag; - private List playerTiles; - + public ReadOnlyCollection Tiles { get; private set; } + private readonly List playerTiles = new List(); + public Player(string name) { + if(name==null || string.IsNullOrEmpty(name)) + { + throw new ArgumentNullException("name"); + } nameTag = name; - Tiles = new List(); + playerTiles = new List(); + Tiles = playerTiles.AsReadOnly(); } public string GetNameTag @@ -27,17 +34,13 @@ namespace QwirkleClassLibrary public void AddTilePlayer(Tile tile) { - Tiles.Add(tile); + playerTiles.Add(tile); } public bool RemoveTilePlayer(Tile tile) { - return Tiles.Remove(tile); + return playerTiles.Remove(tile); } - public List Tiles - { - get; - } } } diff --git a/Qwirkle/QwirkleClassLibrary/Tile.cs b/Qwirkle/QwirkleClassLibrary/Tile.cs index a2510a0..4a65dfc 100644 --- a/Qwirkle/QwirkleClassLibrary/Tile.cs +++ b/Qwirkle/QwirkleClassLibrary/Tile.cs @@ -31,5 +31,10 @@ namespace QwirkleClassLibrary { get { return this.color; } } + + public override string ToString() + { + return shape.ToString() + color.ToString(); + } } } diff --git a/Qwirkle/QwirkleClassLibrary/TileBag.cs b/Qwirkle/QwirkleClassLibrary/TileBag.cs index 8f10257..42c9982 100644 --- a/Qwirkle/QwirkleClassLibrary/TileBag.cs +++ b/Qwirkle/QwirkleClassLibrary/TileBag.cs @@ -9,7 +9,7 @@ namespace QwirkleClassLibrary { public class TileBag { - public ReadOnlyCollection Tiles { get ; private set; } + public ReadOnlyCollection TilesBag { get ; private set; } private readonly List tiles = new List(); public TileBag(int nbSet) @@ -25,6 +25,7 @@ namespace QwirkleClassLibrary } } } + TilesBag = tiles.AsReadOnly(); } public void RemoveTileInBag(Tile tile) @@ -37,11 +38,6 @@ namespace QwirkleClassLibrary } } } - - public List TilesInBag() - { - return tiles; - } } } diff --git a/Qwirkle/QwirkleConsoleApp/Program.cs b/Qwirkle/QwirkleConsoleApp/Program.cs index 7489433..cca092d 100644 --- a/Qwirkle/QwirkleConsoleApp/Program.cs +++ b/Qwirkle/QwirkleConsoleApp/Program.cs @@ -1,10 +1,10 @@ using QwirkleClassLibrary; +using System.Text; using static System.Console; -static void testJeremy() -{ - Game game = new Game(); +static void addPlayer(Game game) +{ string? enterline = ""; do @@ -21,64 +21,93 @@ static void testJeremy() } } while (enterline != "quit"); +} - game.StartGame(); +static void MainMenu(Game game) +{ + game.TilsBagPlayer(); + String TagPlayerPlay; + TagPlayerPlay = game.NextPlayer(); - if (game.GameRunning == true) + Write(" --------------------- GAME ! ------------------------ \n"); + + + Write(TagPlayerPlay + " you have main now ! \n"); + + Write("\n --------------------- YOUR TILES ------------------------ \n"); + + + int pos = game.GetPlayingPlayerPosition(); + + StringBuilder stringBuilder = new StringBuilder(); + + for(int i = 0; i < game.PlayerList[pos].Tiles.Count(); i++) { + stringBuilder.AppendLine(game.PlayerList[pos].Tiles[i].ToString()); + } - game.TilsBagPlayer(); + Write(stringBuilder); - String TagPlayerPlay; - TagPlayerPlay = game.NextPlayer(); - Write(TagPlayerPlay + " you have main now ! \n"); - string s = game.ShowTileOfPlayer(game.GetPlayingPlayerPosition()); - Write(s + "\n"); + Write("\n --------------------- CHOICES ------------------------ \n"); - Write("[1] Place your tiles \n"); - Write("[2] Swap your tiles \n"); + Write("[1] Place your tiles \n"); + Write("[2] Swap your tiles \n"); - int enter = Convert.ToInt32(ReadLine()); + int enter = Convert.ToInt32(ReadLine()); - Tile tile = null; + switch (enter) + { + case 1: + CaseOneAddTile(game); + break; + case 2: + break; + } +} - switch (enter) +static void CaseOneAddTile(Game game) +{ + Tile tile = null; + Write("Enter no tile : "); + int no = Convert.ToInt32(ReadLine()); + + if (no >= 0 && no <= 5) + { + tile = game.TileOfPlayerWithPos(no); + Write("Enter x : "); + int x = Convert.ToInt32(ReadLine()); + Write("Enter y : "); + int y = Convert.ToInt32(ReadLine()); + if (game.PlaceTileGame(tile, x, y) == true) + { + Write("ok ! your tile is placed \n"); + + } + else { - case 1: - // si good faire des boucles demain - Write("Enter no tile : "); - int no = Convert.ToInt32(ReadLine()); - - if (no >= 0 && no <= 5) - { - tile = game.TileOfPlayerWithPos(no); - Write("Enter x : "); - int x = Convert.ToInt32(ReadLine()); - Write("Enter y : "); - int y = Convert.ToInt32(ReadLine()); - if (game.PlaceTileGame(tile, x, y) == true) - { - Write("ok ! your tile is placed \n"); - - } - else - { - Write("no no no \n"); - } - } - else - { - Write("No is out of range\n"); - } - - - break; - case 2: - break; + Write("no no no \n"); } + } + else + { + Write("No is out of range\n"); + } +} +static void testJeremy() +{ + Game game = new Game(); + + addPlayer(game); + + game.StartGame(); + + + if (game.GameRunning == true) + { + MainMenu(game); } diff --git a/Qwirkle/TestBase/UnitTest1.cs b/Qwirkle/TestBase/UnitTest1.cs index b759b05..f00d528 100644 --- a/Qwirkle/TestBase/UnitTest1.cs +++ b/Qwirkle/TestBase/UnitTest1.cs @@ -2,14 +2,42 @@ using QwirkleClassLibrary; namespace TestBase { - public class UnitTest1 + public class TestPlayers { - public void Test_PlayerRemoveTile(bool expectedResult) + [Theory] + [InlineData(true, "Mathis")] + [InlineData(false, null)] + public void Test_CreatePlayer(bool isValid, string playertag) { - Tile t = new Tile(Square, Red); - Player p = new Player("Patrick"); - bool result = p.RemoveTilePlayer(t); - Assert.True(result); + if (!isValid) + { + Assert.Throws(() => new Player(playertag)); + return; + } + Player player = new Player(playertag); + Assert.Equal(playertag, player.GetNameTag); + } + + [Fact] + + public void Test_AddTilePlayer() + { + Player p = new Player("cobaye"); + + Tile tile = new Tile(Shape.Round, Color.Orange); + + p.AddTilePlayer(tile); + + bool r = false; + + for(int i = 0; i < p.Tiles.Count; i++) + { + if (p.Tiles[i] == tile) + { + r = true; + } + } + Assert.True(r); } } } \ No newline at end of file