Beispiel #1
0
        public void Initialize()
        {
            server  = new Server();
            rplayer = new RandomPlayer("jim");
            lplayer = new LeastSymmetricPlayer("reggie");
            mplayer = new MostSymmetricPlayer("michael");

            randBlue = new Player(rplayer, "blue");
            tiles    = new List <Tile> {
                new Tile(1, new List <int> {
                    0, 1, 2, 3, 4, 5, 6, 7
                }),
                new Tile(2, new List <int> {
                    0, 1, 2, 4, 3, 6, 5, 7
                }),
                new Tile(3, new List <int> {
                    0, 6, 1, 5, 2, 4, 3, 7
                }),
                new Tile(4, new List <int> {
                    0, 5, 1, 4, 2, 7, 3, 6
                }),
                new Tile(5, new List <int> {
                    0, 2, 1, 4, 3, 7, 5, 6
                }),
            };
        }
Beispiel #2
0
        public void TestIllegalPlayTileNotInHand()
        {
            Server server           = new Server();
            MostSymmetricPlayer mp1 = new MostSymmetricPlayer("jim");

            server.AddPlayer(mp1, "blue");

            Tile testTile1 = new Tile(1, new List <int>(8)
            {
                0, 1, 2, 3, 4, 5, 6, 7,
            });
            Tile testTile2 = new Tile(2, new List <int>(8)
            {
                0, 1, 2, 3, 4, 7, 6, 5,
            });
            Tile testTile3 = new Tile(3, new List <int>(8)
            {
                0, 5, 1, 4, 2, 7, 3, 6,
            });

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

            Player p1        = server.alive[0];
            var    origClass = p1.iplayer.GetType();

            server.gameState = Server.State.loop;
            bool legalPlay = server.LegalPlay(p1, server.board, otherTile);

            Assert.IsFalse(legalPlay);
            Assert.AreNotEqual(origClass, server.alive[0].iplayer.GetType());
        }
Beispiel #3
0
        public void Initialize()
        {
            server               = new Server();
            randomPlayer         = new RandomPlayer("jim");
            leastSymmetricPlayer = new LeastSymmetricPlayer("reggie");
            mostSymmetricPlayer  = new MostSymmetricPlayer("michael");

            //randBlue = new PlayerProxy(randomPlayer, "blue", 9999);
            //mostsymRed = new PlayerProxy(mostSymmetricPlayer, "red", 9999);
            //leastsymRed = new PlayerProxy(leastSymmetricPlayer, "red", 9999);


            tiles = new List <Tile> {
                new Tile(1, new List <int> {
                    0, 1, 2, 3, 4, 5, 6, 7
                }),
                new Tile(2, new List <int> {
                    0, 1, 2, 4, 3, 6, 5, 7
                }),
                new Tile(3, new List <int> {
                    0, 6, 1, 5, 2, 4, 3, 7
                }),
                new Tile(4, new List <int> {
                    0, 5, 1, 4, 2, 7, 3, 6
                }),
                new Tile(5, new List <int> {
                    0, 2, 1, 4, 3, 7, 5, 6
                }),
            };
        }
Beispiel #4
0
 public void TestConstructorMostSymmetricPlayer()
 {
     for (int i = 0; i < Constants.colors.Count; i++)
     {
         MostSymmetricPlayer player = new MostSymmetricPlayer("john");
         Player p = new Player(player, Constants.colors[i]);
     }
 }
Beispiel #5
0
        void AddTwoPlayers()
        {
            MostSymmetricPlayer p1 = new MostSymmetricPlayer("john");
            MostSymmetricPlayer p2 = new MostSymmetricPlayer("john");

            server.AddPlayer(p1, "blue");
            server.AddPlayer(p2, "green");
        }
Beispiel #6
0
        public void TestInvalidColor()
        {
            AddThreePlayers();

            MostSymmetricPlayer mPlayer = new MostSymmetricPlayer("john");

            server.AddPlayer(mPlayer, "not blue");
        }
Beispiel #7
0
        public void TestDuplicateColor()
        {
            AddThreePlayers();

            MostSymmetricPlayer mPlayer = new MostSymmetricPlayer("harry");

            server.AddPlayer(mPlayer, "blue");
        }
Beispiel #8
0
        public void TestReplacePlayer()
        {
            MostSymmetricPlayer  mPlayer1    = new MostSymmetricPlayer("john");
            LeastSymmetricPlayer replacement = new LeastSymmetricPlayer("adam");

            Player player = new Player(mPlayer1, "blue");

            player.ReplaceIPlayer(replacement);
            Assert.AreEqual("adam", player.iplayer.GetName());
        }
Beispiel #9
0
        void AddFourPlayers()
        {
            MostSymmetricPlayer p1 = new MostSymmetricPlayer("john");
            MostSymmetricPlayer p2 = new MostSymmetricPlayer("jim");
            MostSymmetricPlayer p3 = new MostSymmetricPlayer("harry");
            MostSymmetricPlayer p4 = new MostSymmetricPlayer("miles");

            server.AddPlayer(p1, "blue");
            server.AddPlayer(p2, "green");
            server.AddPlayer(p3, "red");
            server.AddPlayer(p4, "hotpink");
        }
Beispiel #10
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));
        }
Beispiel #11
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));
        }
Beispiel #12
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]);
                }
            }
        }
Beispiel #13
0
        public void TestLegalPlayBoardUndo()
        {
            Server server          = new Server();
            MostSymmetricPlayer p1 = new MostSymmetricPlayer("john");

            server.AddPlayer(p1, "blue");

            Tile testTile1 = new Tile(1, new List <int>(8)
            {
                0, 1, 2, 3, 4, 5, 6, 7,
            });
            Tile testTile2 = new Tile(2, new List <int>(8)
            {
                0, 1, 2, 3, 4, 5, 6, 7,
            });
            Tile testTile3 = new Tile(3, new List <int>(8)
            {
                0, 5, 1, 4, 2, 7, 3, 6,
            });

            Player p_1 = server.alive[0];

            var origClass = p_1.iplayer.GetType();

            server.board.AddPlayerToken("blue", new Position(4, 6, 0));
            p_1.Hand = new List <Tile> {
                testTile1, testTile2, testTile3
            };
            server.gameState = Server.State.loop;
            Boolean legalPlay = server.LegalPlay(p_1, server.board, testTile1);

            Assert.AreNotEqual(origClass, server.alive[0].iplayer.GetType());
            Assert.IsFalse(legalPlay);
            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    Assert.IsNull(server.board.tiles[i][j]);
                }
            }
        }
Beispiel #14
0
        public void TestLegalPlayCheckLastPossibleMoveNotUndone()
        {
            Server server          = new Server();
            MostSymmetricPlayer p1 = new MostSymmetricPlayer("john");

            server.AddPlayer(p1, "blue");

            Tile testTile1 = new Tile(1, new List <int>(8)
            {
                0, 1, 2, 3, 4, 5, 6, 7,
            });
            Tile testTile2 = new Tile(2, new List <int>(8)
            {
                0, 1, 2, 3, 4, 5, 6, 7,
            });
            Tile testTile3 = new Tile(3, new List <int>(8)
            {
                0, 5, 1, 4, 2, 7, 3, 6,
            });

            Player p_1 = server.alive[0];

            server.board.AddPlayerToken("blue", new Position(4, 6, 0));
            p_1.Hand = new List <Tile> {
                testTile1, testTile2, testTile3
            };
            server.gameState = Server.State.loop;
            Boolean legalPlay = server.LegalPlay(p_1, server.board, testTile1);

            Assert.IsFalse(legalPlay);
            Assert.AreEqual(3, p_1.Hand.Count);
            for (int i = 1; i < 4; i++)
            {
                Assert.AreEqual(i, p_1.Hand[i - 1].id);
            }
        }