diff --git a/Qwirkle/QwirkleClassLibrary/Game.cs b/Qwirkle/QwirkleClassLibrary/Game.cs new file mode 100644 index 0000000..828a995 --- /dev/null +++ b/Qwirkle/QwirkleClassLibrary/Game.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +namespace QwirkleClassLibrary +{ + public class Game + { + private TileBag bag; + private List players; + + public Game(List pl) + { + players = pl; + bag = new TileBag(); + + players[0].IsPlaying = true; + } + + public int PositionPlayerPlay() + { + for (int i = 0; i < players.Count; i++) + { + if (players[i].IsPlaying == true) + { + Console.WriteLine(i); + return i; + } + } + return -1; + } + + public int GetNbPlayers + { + get { return players.Count; } + } + + public void RemoveTileInBagGame(Tile tile) + { + bag.RemoveTileInBag(tile); + } + + public List Bag + { + get { return bag.TilesInBag(); } + } + + public void AddTileInBagOfPlayer(int posplayer, Tile tile) + { + players[posplayer].AddTilePlayer(tile); + } + + public void ShowTileOfPlayer(int posplayer) + { + List tiles = players[posplayer].Tiles; + + string r = ("Tile of " + posplayer + " : "); + + foreach(Tile tile in tiles) + { + r = (r + tile.NameColorTile()); + } + Console.WriteLine(r); + + } + + public void SetNextPlayer(int old, int neew) + { + if (old >= 0) + { + players[old].IsPlaying = false; + } + players[neew].IsPlaying = true; + Console.WriteLine(players[neew].GetName + "you have main now !"); + + } + + } + + + +} + diff --git a/Qwirkle/QwirkleClassLibrary/Player.cs b/Qwirkle/QwirkleClassLibrary/Player.cs index 9b2e578..86f990b 100644 --- a/Qwirkle/QwirkleClassLibrary/Player.cs +++ b/Qwirkle/QwirkleClassLibrary/Player.cs @@ -9,35 +9,49 @@ namespace QwirkleClassLibrary public class Player { private string nameTag; - + private List tiles; private bool isPlaying = false; + private Score s; public Player(string name) { nameTag = name; - if(isPlaying == false) - { - Console.WriteLine("Player created. Name : " + nameTag + ", Turn to play : No\n"); - } - - else Console.WriteLine("Player created. Name : " + nameTag + ", Turn to play : Yes\n"); + tiles = new List(); + s = new Score(this); + Console.WriteLine("Player created. Name : " + nameTag + "\n"); + } + public Player() + { + nameTag = "Unknow"; + tiles = new List(); + s = new Score(this); + Console.WriteLine("Player created. Name : " + nameTag + "\n"); } - public string getNameTag + public string GetNameTag { get { return nameTag; } } - public bool getIsPlaying + public bool IsPlaying { get { return isPlaying; } + set { isPlaying = value; } // pour vulgariser, le C# prends la value qui sert d'égalité !! } - - public void setIsPlaying(bool isPlaying) + public void AddTilePlayer(Tile tile) { - this.isPlaying = isPlaying; + tiles.Add(tile); + } + public void RemoveTilePlayer(Tile tile) + { + tiles.Remove(tile); } + public List Tiles + { + get{ return tiles; } + + } } } diff --git a/Qwirkle/QwirkleClassLibrary/Score.cs b/Qwirkle/QwirkleClassLibrary/Score.cs index f855527..9989d92 100644 --- a/Qwirkle/QwirkleClassLibrary/Score.cs +++ b/Qwirkle/QwirkleClassLibrary/Score.cs @@ -10,5 +10,12 @@ namespace QwirkleClassLibrary { private int score; private string playerTag; + + public Score(Player p) + { + score = 0; + playerTag = p.GetName; + } + } } diff --git a/Qwirkle/QwirkleClassLibrary/Tile.cs b/Qwirkle/QwirkleClassLibrary/Tile.cs index 0ce2de1..737fd36 100644 --- a/Qwirkle/QwirkleClassLibrary/Tile.cs +++ b/Qwirkle/QwirkleClassLibrary/Tile.cs @@ -16,7 +16,12 @@ namespace QwirkleClassLibrary { shape = sh; color = co; - Console.WriteLine("A tile of shape " + shape + " and color " + color + " has been created.\n"); + Console.WriteLine("A tile of shape " + shape + " and color " + color + " has been created."); + } + + public string NameColorTile() + { + return (color.ToString() + " , " + shape.ToString()); } public Shape GetShape { diff --git a/Qwirkle/QwirkleClassLibrary/TileBag.cs b/Qwirkle/QwirkleClassLibrary/TileBag.cs index 6f923f8..158200c 100644 --- a/Qwirkle/QwirkleClassLibrary/TileBag.cs +++ b/Qwirkle/QwirkleClassLibrary/TileBag.cs @@ -14,11 +14,41 @@ namespace QwirkleClassLibrary public TileBag() { tiles = new List(); + + + for(int i=0; i<3; i++) + { + foreach (Shape s in Enum.GetValues(typeof(Shape))) + { + foreach (Color c in Enum.GetValues(typeof(Color))) + { + Tile t = new Tile(s, c); + tiles.Add(t); + } + } + + } + + } - private void WhithdrawNbTiles() + public void RemoveTileInBag(Tile tile) { - this.nbtiles = this.nbtiles - 1; + for(int i=0; i TilesInBag() + { + return tiles; } } + } + diff --git a/Qwirkle/QwirkleConsoleApp/Program.cs b/Qwirkle/QwirkleConsoleApp/Program.cs index 0406af4..ff3efad 100644 --- a/Qwirkle/QwirkleConsoleApp/Program.cs +++ b/Qwirkle/QwirkleConsoleApp/Program.cs @@ -1,3 +1,107 @@ using QwirkleClassLibrary; +using static System.Console; -Console.WriteLine("Hello, World!"); +static Game InitializerGame() +{ + OutputEncoding = System.Text.Encoding.UTF8; + List Players = new List(); + + WriteLine("Enter number of player play : "); + try + { + int nbplayer = Convert.ToInt32(ReadLine()); + + + while (nbplayer <= 1 || nbplayer > 4) + { + WriteLine("ERROR : Enter minmun one player or four max !"); + nbplayer = Convert.ToInt32(ReadLine()); + } + + + for (int i = 0; i < nbplayer; i++) + { + WriteLine("Enter name of player " + (i + 1) + " : \n"); + + String name = ReadLine(); + + bool nameInvalid = string.IsNullOrWhiteSpace(name); + + while (nameInvalid == true) + { + WriteLine("ERROR Incorrect name, please enter name of player " + (i + 1) + " : \n"); + name = ReadLine(); + nameInvalid = string.IsNullOrWhiteSpace(name); + } + + for (int j = 0; j < Players.Count; j++) + { + if (Players[j].GetNameTag == name) + { + name = (name + "bis"); + } + } + + Player p = new Player(name); + Players.Add(p); + + } + + } + catch (Exception e) + { Console.WriteLine(e.Message); } + + return new Game(Players); +} + +static void NextPlayer(Game game) +{ + int posPlayerPlay = game.PositionPlayerPlay(); + + int posPlayerNextPlay = game.PositionPlayerPlay() + 1; + + if (posPlayerNextPlay >= game.GetNbPlayers) + { + posPlayerNextPlay = 0; + } + + game.SetNextPlayer(posPlayerPlay, posPlayerNextPlay); +} + +static void TilsBagPlayer(Game game) +{ + List listTile = game.Bag; + + for (int i = 0; i < game.GetNbPlayers; i++) + { + for (int j = 0; j < 6; j++) + { + Tile tile = listTile[j]; + game.AddTileInBagOfPlayer(i, tile); + game.RemoveTileInBagGame(tile); + } + } + +} + + +static void testJeremy() +{ + Game game = InitializerGame(); + Write("\n -------------------------------------------------------- \n"); + + NextPlayer(game); + NextPlayer(game); + NextPlayer(game); + NextPlayer(game); + + TilsBagPlayer(game); + + for (int i = 0; i < game.GetNbPlayers; i++) + { + game.ShowTileOfPlayer(i); + } +} + + +testJeremy();