From 60848f64f65fed72fdcf4c7b40cdec16b5310a10 Mon Sep 17 00:00:00 2001 From: "jeremy.mouyon" Date: Tue, 9 Apr 2024 18:35:17 +0200 Subject: [PATCH] place tile work ! --- Qwirkle/QwirkleClassLibrary/Board.cs | 3 +- Qwirkle/QwirkleClassLibrary/Game.cs | 72 +++++++++++++++-- Qwirkle/QwirkleConsoleApp/Program.cs | 112 ++++++++++++++------------- 3 files changed, 127 insertions(+), 60 deletions(-) diff --git a/Qwirkle/QwirkleClassLibrary/Board.cs b/Qwirkle/QwirkleClassLibrary/Board.cs index 7af0a38..55af03d 100644 --- a/Qwirkle/QwirkleClassLibrary/Board.cs +++ b/Qwirkle/QwirkleClassLibrary/Board.cs @@ -31,9 +31,10 @@ namespace QwirkleClassLibrary { if (this.Cells[i].GetX == x && this.Cells[i].GetY == y) { - if (Cells[i].IsFree == false) + if (Cells[i].IsFree == true) { return Cells[i].SetTile(tile); + } else { diff --git a/Qwirkle/QwirkleClassLibrary/Game.cs b/Qwirkle/QwirkleClassLibrary/Game.cs index e3c461e..35b479d 100644 --- a/Qwirkle/QwirkleClassLibrary/Game.cs +++ b/Qwirkle/QwirkleClassLibrary/Game.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; namespace QwirkleClassLibrary @@ -11,13 +12,57 @@ namespace QwirkleClassLibrary { private TileBag bag; private List players; + private bool gameRunning; + private Board board; - public Game(List players) + public Game() { - this.players = players; + this.players = new List(); + board = new Board(); bag = new TileBag(3); + gameRunning = false; } + public bool AddPlayerInGame(string? PlayerTag) + { + bool nameInvalid = string.IsNullOrWhiteSpace(PlayerTag); + + if (nameInvalid == true || this.gameRunning == true || PlayerTag == null) + { + return false; + } + + if (players.Count >= 4) + { + return false; + } + + for (int i = 0; i < players.Count; i++) + { + if (players[i].GetNameTag == PlayerTag) + { + return false; + } + } + + Player p = new Player(PlayerTag); + players.Add(p); + + return true; + } + + public bool StartGame() + { + if (players.Count < 2) + { + return false; + } + + this.gameRunning = true; + return true; + } + + public int GetPlayingPlayerPosition() { for (int i = 0; i < players.Count; i++) @@ -46,7 +91,7 @@ namespace QwirkleClassLibrary string r = ("Tile of " + posplayer + " : "); - foreach(Tile tile in tiles) + foreach (Tile tile in tiles) { r = (r + " " + tile.NameColorTile()); } @@ -54,14 +99,19 @@ namespace QwirkleClassLibrary } + public Tile TileOfPlayerWithPos(int postile) + { + return players[GetPlayingPlayerPosition()].Tiles[postile]; + } + public void SetNextPlayer(int old, int neew) { - if (old >= 0) + + if (old >= 0 || old != -1) { players[old].IsPlaying = false; } players[neew].IsPlaying = true; - } @@ -94,6 +144,18 @@ namespace QwirkleClassLibrary return (players[posPlayerNextPlay].GetNameTag); } + public bool GameRunning + { + get { return gameRunning; } + } + + public bool PlaceTileGame(Tile tile, int x, int y) + { + bool r = board.AddTileInCell(x, y, tile); + players[GetPlayingPlayerPosition()].RemoveTilePlayer(tile); + return r; + } + } diff --git a/Qwirkle/QwirkleConsoleApp/Program.cs b/Qwirkle/QwirkleConsoleApp/Program.cs index b96145e..7489433 100644 --- a/Qwirkle/QwirkleConsoleApp/Program.cs +++ b/Qwirkle/QwirkleConsoleApp/Program.cs @@ -1,83 +1,87 @@ using QwirkleClassLibrary; using static System.Console; -static Game InitializerGame() +static void testJeremy() { - OutputEncoding = System.Text.Encoding.UTF8; + Game game = new Game(); - List Players = new List(); + string? enterline = ""; - WriteLine("Enter number of player play : "); - try + do { - 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 (enter quit to quit) : "); + enterline = ReadLine(); + if (enterline != "quit") { - WriteLine("Enter name of player " + (i + 1) + " : \n"); - - String? name = ReadLine(); - - bool nameInvalid = string.IsNullOrWhiteSpace(name); - - while (nameInvalid == true) + bool r = game.AddPlayerInGame(enterline); + if (r == false) { - WriteLine("ERROR Incorrect name, please enter name of player " + (i + 1) + " : \n"); - name = ReadLine(); - nameInvalid = string.IsNullOrWhiteSpace(name); + WriteLine("ERROR : Name is invalid."); } + } - for (int j = 0; j < Players.Count; j++) - { - if (Players[j].GetNameTag == name) - { - name = (name + "bis"); - } - } + } while (enterline != "quit"); - Player p = new Player(name); - Players.Add(p); + game.StartGame(); - } - } - catch (Exception e) - { Console.WriteLine(e.Message); } + if (game.GameRunning == true) + { - return new Game(Players); -} + game.TilsBagPlayer(); + String TagPlayerPlay; + TagPlayerPlay = game.NextPlayer(); + Write(TagPlayerPlay + " you have main now ! \n"); + string s = game.ShowTileOfPlayer(game.GetPlayingPlayerPosition()); + Write(s + "\n"); -static void testJeremy() -{ - Game game = InitializerGame(); - Write("\n -------------------------------------------------------- \n"); + Write("[1] Place your tiles \n"); + Write("[2] Swap your tiles \n"); - String TagPlayerPlay; + int enter = Convert.ToInt32(ReadLine()); - TagPlayerPlay = game.NextPlayer(); + Tile tile = null; - Write(TagPlayerPlay + " you have main now !"); + switch (enter) + { + case 1: + // si good faire des boucles demain + Write("Enter no tile : "); + int no = Convert.ToInt32(ReadLine()); - TagPlayerPlay = game.NextPlayer(); + 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"); + } - Write(TagPlayerPlay + " you have main now !"); - game.TilsBagPlayer(); + break; + case 2: + break; + } + - for (int i = 0; i < game.GetNbPlayers; i++) - { - game.ShowTileOfPlayer(i); } + }