|
|
|
@ -21,7 +21,7 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
public ReadOnlyDictionary<Player, int> ScoreBoard => scoreBoard.AsReadOnly();
|
|
|
|
|
private readonly Dictionary<Player, int> scoreBoard = new();
|
|
|
|
|
|
|
|
|
|
private TileBag? bag = null;
|
|
|
|
|
private TileBag bag;
|
|
|
|
|
public bool GameRunning { get; private set; }
|
|
|
|
|
private Board board;
|
|
|
|
|
|
|
|
|
@ -56,6 +56,7 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
/// </summary>
|
|
|
|
|
public Game()
|
|
|
|
|
{
|
|
|
|
|
bag = CreateTileBag(3);
|
|
|
|
|
board = CreateBoard();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -120,12 +121,6 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
/// <returns>Board</returns>
|
|
|
|
|
public Board GetBoard() { return board; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Returns the tile bag of the game
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public TileBag GetTileBag() { return bag; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Creates a board with a number of columns and rows
|
|
|
|
|
/// </summary>
|
|
|
|
@ -153,7 +148,6 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
public void StartGame()
|
|
|
|
|
{
|
|
|
|
|
if (players.Count < 2 || players.Count >= 5) return;
|
|
|
|
|
bag = CreateTileBag(3);
|
|
|
|
|
GameRunning = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -183,7 +177,7 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
{
|
|
|
|
|
if (GetPlayingPlayerPosition() == -1)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException("No player currently playing !");
|
|
|
|
|
throw new ArgumentException("No player play.");
|
|
|
|
|
}
|
|
|
|
|
return players[GetPlayingPlayerPosition()];
|
|
|
|
|
}
|
|
|
|
@ -223,13 +217,10 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < 6; j++)
|
|
|
|
|
{
|
|
|
|
|
if (bag != null)
|
|
|
|
|
{
|
|
|
|
|
int val = RandomNumberGenerator.GetInt32(0, bag.TilesBag.Count);
|
|
|
|
|
int val = RandomNumberGenerator.GetInt32(0, bag.TilesBag.Count);
|
|
|
|
|
|
|
|
|
|
p.AddTileToPlayer(bag.TilesBag[val]);
|
|
|
|
|
bag.RemoveTileInBag(bag.TilesBag[val]);
|
|
|
|
|
}
|
|
|
|
|
p.AddTileToPlayer(bag.TilesBag[val]);
|
|
|
|
|
bag.RemoveTileInBag(bag.TilesBag[val]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -659,7 +650,7 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="playerTilesBagPos"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public bool CheckPlacementPossibilities(List<int> playerTilesBagPos)
|
|
|
|
|
public bool CheckBoardTile(List<int> playerTilesBagPos)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < playerTilesBagPos.Count; i++)
|
|
|
|
|
{
|
|
|
|
@ -691,7 +682,7 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
{
|
|
|
|
|
List<int> playerTilesBagPos = CheckTilesBag();
|
|
|
|
|
|
|
|
|
|
if (playerTilesBagPos.Count != 0 && !CheckPlacementPossibilities(playerTilesBagPos))
|
|
|
|
|
if (playerTilesBagPos.Count != 0 && !CheckBoardTile(playerTilesBagPos))
|
|
|
|
|
{
|
|
|
|
|
OnEndOfGame(new EndOfGameNotifiedEventArgs(player));
|
|
|
|
|
GameRunning = false;
|
|
|
|
@ -701,15 +692,5 @@ namespace QwirkleClassLibrary.Games
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ClearGame()
|
|
|
|
|
{
|
|
|
|
|
players.Clear();
|
|
|
|
|
scoreBoard.Clear();
|
|
|
|
|
cellUsed.Clear();
|
|
|
|
|
bag = null;
|
|
|
|
|
board = CreateBoard();
|
|
|
|
|
GameRunning = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|