예제 #1
0
        public void TestMostSymmetricPlayerPlayTurnNoLegalHand()
        {
            MostSymmetricPlayer mPlayer      = new MostSymmetricPlayer("mark");
            List <string>       other_colors = new List <string>();

            foreach (string color in Constants.colors)
            {
                if (color != "blue")
                {
                    other_colors.Add(color);
                }
            }
            mPlayer.Initialize("blue", other_colors);
            server.AddPlayer(mPlayer, "blue");
            Player player = new Player(mPlayer, "blue");

            server.board.AddPlayerToken("blue", new Position(0, -1, 5));

            // symmetricity of 1
            player.AddTiletoHand(testTile1);

            // symmetricity of 4
            Tile testTile4 = new Tile(4, new List <int>(8)
            {
                0, 5, 1, 3, 2, 6, 4, 7
            });

            player.AddTiletoHand(testTile4);

            // right of tile placement
            Tile testTile5 = new Tile(5, new List <int>(8)
            {
                6, 0, 7, 1, 2, 3, 4, 5
            });
            // below of tile placement
            Tile testTile6 = new Tile(6, new List <int>(8)
            {
                0, 7, 1, 6, 2, 3, 4, 5
            });

            server.board.PlaceTile(testTile5, 1, 0);
            server.board.PlaceTile(testTile6, 0, 1);

            server.gameState    = Server.State.safe;
            mPlayer.playerState = MostSymmetricPlayer.State.loop;
            Tile tobePlayed = player.iplayer.PlayTurn(server.board, player.Hand, 33);

            Assert.IsTrue(testTile1.CompareByPath(tobePlayed));
        }
예제 #2
0
        public void TestMostSymmetricPlayerPlayTurnMultiLegalHand()
        {
            MostSymmetricPlayer mPlayer      = new MostSymmetricPlayer("mark");
            List <string>       other_colors = new List <string>();

            foreach (string color in Constants.colors)
            {
                if (color != "blue")
                {
                    other_colors.Add(color);
                }
            }
            mPlayer.Initialize("blue", other_colors);
            server.AddPlayer(mPlayer, "blue");
            Player player = new Player(mPlayer, "blue");

            server.board.AddPlayerToken("blue", new Position(0, -1, 5));

            // symmetricity of 1, illegal
            player.AddTiletoHand(testTile1);

            // symmetricity of 4
            Tile testTile4 = new Tile(4, new List <int>(8)
            {
                0, 5, 1, 3, 2, 6, 4, 7
            });

            player.AddTiletoHand(testTile4);
            // symmetricity of 1, legal
            Tile testTile5 = new Tile(5, new List <int>(8)
            {
                0, 5, 1, 4, 2, 7, 6, 3
            });

            player.AddTiletoHand(testTile5);



            server.gameState    = Server.State.safe;
            mPlayer.playerState = MostSymmetricPlayer.State.loop;
            Tile tobePlayed = player.iplayer.PlayTurn(server.board, player.Hand, 33);

            Assert.AreEqual(1, server.alive.Count);

            Assert.IsTrue(testTile5.CompareByPath(tobePlayed));
        }
예제 #3
0
        public void TestMostSymmetricPlayerPlayTurnOneLegalHand()
        {
            MostSymmetricPlayer mPlayer = new MostSymmetricPlayer("mark");

            List <string> other_colors = new List <string>();

            foreach (string color in Constants.colors)
            {
                if (color != "blue")
                {
                    other_colors.Add(color);
                }
            }
            mPlayer.Initialize("blue", other_colors);
            server.AddPlayer(mPlayer, "blue");
            Player player = new Player(mPlayer, "blue");

            server.board.AddPlayerToken("blue", new Position(0, -1, 5));

            // symmetricity of 1
            player.AddTiletoHand(testTile1);

            // symmetricity of 4
            Tile testTile4 = new Tile(4, new List <int>(8)
            {
                0, 5, 1, 3, 2, 6, 4, 7
            });

            player.AddTiletoHand(testTile4);

            server.gameState = Server.State.safe;
            Tile tobePlayed = player.iplayer.PlayTurn(server.board, player.Hand, 33);

            Assert.AreEqual(1, server.alive.Count);

            Assert.IsTrue(testTile4.CompareByPath(tobePlayed));

            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    Assert.IsNull(server.board.tiles[i][j]);
                }
            }
        }