示例#1
0
 public GameLogic()
 {
     TileBase = new List<Tile>();
     PlayerTiles = new List<Tile>();
     AiTiles = new List<Tile>();
     Scoring = new Scoring();
     GameMoves = new Moves();
 }
示例#2
0
        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);
        }
示例#3
0
        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;
        }
示例#4
0
 public void ResetGame()
 {
     TileBase.Clear();
     PlayerTiles.Clear();
     AiTiles.Clear();
     movesCount = 0;
     GameMoves = new Moves();
     Scoring = new Scoring();
 }