public GameLogic() { TileBase = new List<Tile>(); PlayerTiles = new List<Tile>(); AiTiles = new List<Tile>(); Scoring = new Scoring(); GameMoves = new Moves(); }
public void DominoesDataStructureTest() { var moves = new Moves(); var root = moves.FirstMove(new Tile(1,1)); var node_0 = moves.NewMove(new Tile(1, 2), root, Side.Top); var node_1 = moves.NewMove(new Tile(3, 1), root, Side.Bottom); var node_2 = moves.NewMove(new Tile(4, 1), root, Side.Left); var node_0_0 = moves.NewMove(new Tile(2, 5), node_0, Side.Bottom); var node_3 = moves.NewMove(new Tile(6, 1), root, Side.Right); var node_2_3 = moves.NewMove(new Tile(2, 4), node_2, Side.Bottom); var leaves = moves.Leaves; Assert.IsTrue(leaves.Contains(node_1) && leaves.Contains(node_3) && leaves.Contains(node_0_0) && leaves.Contains(node_2_3) && leaves.Count == 4); }
public bool CheckGameState(Moves moves, List<Tile> tileBase, List<Tile> playerTiles, List<Tile> aiTiles) { if (playerTiles.Count == 0) { var scores = CountScores(aiTiles); if (GameOver != null) { GameOver(scores, 0); return true; } } else if (aiTiles.Count == 0) { var scores = CountScores(playerTiles); if (GameOver != null) { GameOver(0, scores); return true; } } else if ((tileBase.Count == 0 && (moves.Leaves.Select(x => x.CurrentTile).Where(x => playerTiles.Select(y => y.TopEnd).Contains(x.TopEnd)).Count() == 0 || moves.Leaves.Select(x => x.CurrentTile).Where(x => playerTiles.Select(y => y.TopEnd).Contains(x.BottomEnd)).Count() == 0 || moves.Leaves.Select(x => x.CurrentTile).Where(x => playerTiles.Select(y => y.BottomEnd).Contains(x.TopEnd)).Count() == 0 || moves.Leaves.Select(x => x.CurrentTile).Where(x => playerTiles.Select(y => y.BottomEnd).Contains(x.BottomEnd)).Count() == 0)) || (tileBase.Count == 0 && (moves.Leaves.Select(x => x.CurrentTile).Where(x => aiTiles.Select(y => y.TopEnd).Contains(x.TopEnd)).Count() == 0 || moves.Leaves.Select(x => x.CurrentTile).Where(x => aiTiles.Select(y => y.TopEnd).Contains(x.BottomEnd)).Count() == 0 || moves.Leaves.Select(x => x.CurrentTile).Where(x => aiTiles.Select(y => y.BottomEnd).Contains(x.TopEnd)).Count() == 0 || moves.Leaves.Select(x => x.CurrentTile).Where(x => aiTiles.Select(y => y.BottomEnd).Contains(x.BottomEnd)).Count() == 0)) ) { var playerScores = CountScores(aiTiles); var aiScores = CountScores(playerTiles); if (GameOver != null) { GameOver(playerScores, aiScores); return true; } } return false; }
public void ResetGame() { TileBase.Clear(); PlayerTiles.Clear(); AiTiles.Clear(); movesCount = 0; GameMoves = new Moves(); Scoring = new Scoring(); }