Ejemplo n.º 1
0
        public void MakeAMoveCauseTokenToCrossMultipleTiles()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);
            Tile          t4   = test.makeTile(0, 1, 2, 7, 4, 5, 3, 6);

            Admin a = new Admin();
            Board b = new Board();

            SPlayer p1 = new SPlayer("p1", new List <Tile>());

            p1.setPosn(new Posn(1, 1, 3));

            b.registerPlayer(p1);

            b.grid[1, 1] = t2;
            b.grid[1, 3] = t1;
            b.grid[1, 4] = t3;

            TurnResult tr         = a.playATurn(b, t4);
            Posn       playerPosn = tr.currentPlayers[0].getPlayerPosn();

            Assert.IsTrue(playerPosn.returnRow() == 1);
            Assert.IsTrue(playerPosn.returnCol() == 4);
            Assert.IsTrue(playerPosn.returnLocationOnTile() == 3);
        }
Ejemplo n.º 2
0
        public void Player1MoveCausesPlayer2EliminationBeforeFirstTurn()
        {
            TestScenerios test  = new TestScenerios();
            Tile          t1    = test.makeTile(0, 2, 1, 5, 3, 4, 6, 7);
            Board         board = new Board();
            Admin         admin = new Admin();

            SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer());

            p1.initialize(board);
            test.setStartPos(board, p1, new Posn(5, 6, 7));

            SPlayer p2 = new SPlayer("green", new List <Tile>(), new RandomPlayer());

            p2.initialize(board);
            test.setStartPos(board, p2, new Posn(5, 6, 6));

            TurnResult tr = admin.playATurn(board, t1);

            Posn p1EndPosExpected = new Posn(5, 5, 0);

            Posn p1EndPosActual = tr.currentPlayers[0].getPlayerPosn();

            Assert.IsTrue(p1EndPosExpected.isEqual(p1EndPosActual));
            Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.returnColor() == "green"));
            Assert.IsTrue(tr.playResult.Exists(x => x.returnColor() == "blue"));
        }
Ejemplo n.º 3
0
        public void ValidTurnCausePlayerToBeEliminated()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);

            List <Tile> drawpile = test.makeDrawPile(t2, t3);
            Admin       a        = test.createAdminWithDrawPile(drawpile);
            Board       b        = new Board();

            SPlayer p1    = new SPlayer("p1", new List <Tile>());
            Posn    p1Pos = new Posn(0, 1, 6);

            test.setStartPos(b, p1, p1Pos);
            SPlayer p2    = new SPlayer("p2", new List <Tile>());
            Posn    p2Pos = new Posn(4, 4, 0);

            test.setStartPos(b, p2, p2Pos);

            a.addToActivePlayers(p1);
            a.addToActivePlayers(p2);

            TurnResult tmpturn = a.playATurn(b, t1);

            Assert.AreEqual(1, a.numEliminated(), "count of eliminated players has not increased to 1");
            Assert.IsTrue(tmpturn.eliminatedPlayers.Count == 1, "count of eliminated players has not increased to 1");
            Assert.IsTrue(tmpturn.eliminatedPlayers.Exists(x => x.getColor() == "p1"), "p1 has not been moved to eliminated players");
            Assert.IsFalse(tmpturn.currentPlayers.Exists(x => x.getColor() == "p1"), "p1 has not been removed from current players");
            Assert.IsTrue(tmpturn.currentPlayers.Count == 1, "count of current players has not decreased to 1");
        }
Ejemplo n.º 4
0
        public void MakeAMoveCauseTokenToCrossMultipleTiles()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);
            Tile          t4   = test.makeTile(0, 1, 2, 7, 4, 5, 3, 6);

            Admin a = new Admin();
            Board b = new Board();

            SPlayer p1 = new SPlayer("blue", new List <Tile>());

            b.addPlayerToBoard(p1.getColor(), new Posn(1, 1, 3));

            a.addToActivePlayers(p1);

            b.placeTileAt(t2, 1, 1);
            b.placeTileAt(t1, 1, 3);
            b.placeTileAt(t3, 1, 4);

            TurnResult tr         = a.playATurn(b, t4);
            Posn       playerPosn = b.getPlayerPosn(tr.currentPlayers[0].getColor());

            Assert.IsTrue(new Posn(1, 4, 3).isEqual(playerPosn));
        }
Ejemplo n.º 5
0
        public void Player1MoveCausesPlayer2MovementBeforeFirstTurn()
        {
            TestScenerios test  = new TestScenerios();
            Tile          t1    = test.makeTile(0, 2, 1, 5, 3, 7, 4, 6);
            Board         board = new Board();
            Admin         admin = new Admin();

            SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer());

            board.addPlayerToBoard(p1.getColor(), new Posn(5, 6, 7));

            SPlayer p2 = new SPlayer("green", new List <Tile>(), new RandomPlayer());

            board.addPlayerToBoard(p2.getColor(), new Posn(5, 6, 6));

            admin.addToActivePlayers(p1);
            admin.addToActivePlayers(p2);

            TurnResult tr = admin.playATurn(board, t1);

            Posn p1EndPosExpected = new Posn(5, 5, 0);
            Posn p2EndPosExpected = new Posn(5, 5, 7);

            Posn p1EndPosActual = board.getPlayerPosn(tr.currentPlayers[1].getColor());
            Posn p2EndPosActual = board.getPlayerPosn(tr.currentPlayers[0].getColor());


            Assert.IsTrue(p1EndPosExpected.isEqual(p1EndPosActual));
            Assert.IsTrue(p2EndPosExpected.isEqual(p2EndPosActual));
        }
Ejemplo n.º 6
0
        public void PlayAValidTurnChangesOrderOfInGamePlayers()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);

            List <Tile> drawpile = test.makeDrawPile(t2, t3);
            Admin       a        = test.createAdminWithDrawPile(drawpile);
            Board       b        = new Board();

            SPlayer p1    = new SPlayer("blue", new List <Tile>());
            Posn    p1Pos = new Posn(0, 0, 3);
            SPlayer p2    = new SPlayer("green", new List <Tile>());
            Posn    p2Pos = new Posn(4, 4, 0);

            a.addToActivePlayers(p1);
            a.addToActivePlayers(p2);

            b.addPlayerToBoard("blue", p1Pos);
            b.addPlayerToBoard("green", p2Pos);

            List <SPlayer> l1 = new List <SPlayer>()
            {
                p1, p2
            };

            List <SPlayer> l2 = new List <SPlayer>();

            TurnResult tmpturn = a.playATurn(b, t1);

            Assert.IsTrue(tmpturn.currentPlayers[0].getColor() == "green");
            Assert.IsTrue(tmpturn.currentPlayers[1].getColor() == "blue");
            Assert.IsTrue(tmpturn.currentPlayers.Count == 2);
        }
Ejemplo n.º 7
0
        public void MakeAMoveWhenTileIsRotated()
        {
            Admin          a      = new Admin();
            Board          b      = new Board();
            List <SPlayer> inGame = new List <SPlayer>();

            SPlayer p1 = new SPlayer("p1", new List <Tile>());

            p1.setPosn(new Posn(1, 1, 3));
            b.registerPlayer(p1);
            inGame.Add(p1);

            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 3, 6, 4, 7, 2, 1, 5);

            Tile rotatedTile = t1.rotate();

            TurnResult tr         = a.playATurn(b, rotatedTile);
            Posn       playerPosn = tr.currentPlayers[0].getPlayerPosn();

            Assert.IsTrue(playerPosn.returnCol() == 2, "p1 not at correct col");
            Assert.IsTrue(playerPosn.returnRow() == 1, "p1 not at correct row");
            Assert.IsTrue(playerPosn.returnLocationOnTile() == 0, "p1 not at correct location on tile");
            Assert.IsTrue(tr.currentPlayers.Exists(x => x.returnColor() == "p1"), "p1 not in winning players");
        }
Ejemplo n.º 8
0
        public void SettingPlayerPosition()
        {
            TestScenerios test       = new TestScenerios();
            Board         b          = new Board();
            SPlayer       p1         = test.createPlayerAtPos("blue", new List <Tile>(), new RandomPlayer(), new Posn(1, 2, 3), b);
            Posn          playerPosn = b.getPlayerPosn(p1.getColor());

            Assert.IsTrue(playerPosn.isEqual(new Posn(1, 2, 3)));
        }
Ejemplo n.º 9
0
        public void LocationOnBoardIsNotOccupied()
        {
            Board b       = new Board();
            Posn  newPosn = new Posn(0, 0, 3);

            b.addPlayerToBoard("blue", newPosn);

            Assert.IsFalse(b.locationOccupied(new Posn(0, 0, 0)));
        }
Ejemplo n.º 10
0
        public void RandomPlayerPlacesPawnOnEdgeWithNoOtherPlayers()
        {
            SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer());
            Board   b  = new Board();

            p1.initialize(b);
            Posn checkPosn = p1.playerStrategy.placePawn(b);

            Assert.IsFalse(b.locationOccupied(checkPosn));
        }
Ejemplo n.º 11
0
        public void SettingPlayerPosition()
        {
            SPlayer p1 = new SPlayer();

            p1.setPosn(new Posn(1, 2, 3));
            Posn playerPosn = p1.getPlayerPosn();

            Assert.IsTrue(playerPosn.returnRow() == 1);
            Assert.IsTrue(playerPosn.returnCol() == 2);
            Assert.IsTrue(playerPosn.returnLocationOnTile() == 3);
        }
Ejemplo n.º 12
0
        public void LocationOnBoardIsNotOccupied()
        {
            SPlayer p1 = new SPlayer("blue", new List <Tile>());
            Board   b  = new Board();

            b.registerPlayer(p1);

            Posn newPosn = new Posn(0, 0, 3);

            p1.setPosn(newPosn);

            Assert.IsFalse(b.locationOccupied(new Posn(0, 0, 0)));
        }
Ejemplo n.º 13
0
        public void PosnToPawnLocXML()
        {
            Posn testPosn1 = new Posn(1, 1, 0);
            Posn testPosn2 = new Posn(0, 1, 5);

            XElement pawnLocXML1 = XMLEncoder.posnToPawnLocXML(testPosn1);
            XElement pawnLocXML2 = XMLEncoder.posnToPawnLocXML(testPosn2);

            XElement pawnLocXMLExpected = new XElement("pawn-loc",
                                                       new XElement("h", ""),
                                                       new XElement("n", 1),
                                                       new XElement("n", 2));

            Assert.IsTrue(XNode.DeepEquals(pawnLocXML1, pawnLocXMLExpected));
            Assert.IsTrue(XNode.DeepEquals(pawnLocXML2, pawnLocXMLExpected));
        }
Ejemplo n.º 14
0
        public void PlaceTilePlacesTile()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);

            Board b = new Board();

            b.addPlayerToBoard("blue", new Posn(0, 0, 3));

            Posn endPos = b.placeTile("blue", t1);

            Assert.IsTrue(endPos.returnCol() == 1);
            Assert.IsTrue(endPos.returnRow() == 0);
            Assert.IsTrue(endPos.returnLocationOnTile() == 3);
            Assert.IsTrue(b.getTileAt(0, 1) != null);
        }
Ejemplo n.º 15
0
        public void MakeMoveWhereMultiplePlayersEliminated()
        {
            Admin a = new Admin();
            Board b = new Board();

            TestScenerios test = new TestScenerios();

            //tile to be placed
            Tile t1 = test.makeTile(7, 0, 6, 1, 5, 4, 2, 3);

            //tile the player is on
            Tile t2 = test.makeTile(1, 3, 0, 5, 2, 7, 4, 6);

            test.putTileOnBoard(t2, b, 1, 1);

            //players to be eliminated
            SPlayer elim1 = new SPlayer("elim1", new List <Tile>());

            elim1.setPosn(new Posn(0, 0, 2));
            elim1.playerState = SPlayer.State.Playing;
            SPlayer elim2 = new SPlayer("elim2", new List <Tile>());

            elim2.setPosn(new Posn(0, 0, 3));
            elim2.playerState = SPlayer.State.Playing;
            //player left over
            SPlayer p1 = new SPlayer("p1", new List <Tile>());

            p1.setPosn(new Posn(1, 1, 0));
            p1.playerState = SPlayer.State.Playing;

            b.registerPlayer(p1);
            b.registerPlayer(elim1);
            b.registerPlayer(elim2);

            TurnResult tr         = a.playATurn(b, t1);
            Posn       playerPosn = tr.currentPlayers[0].getPlayerPosn();

            Assert.AreEqual(playerPosn.returnLocationOnTile(), 3, "Remaining player not at location 3 on tile");
            Assert.IsTrue(playerPosn.returnCol() == 1);
            Assert.IsTrue(playerPosn.returnRow() == 1);
            Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.returnColor() == "elim1"), "eliminated player is in eliminated list");
            Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.returnColor() == "elim2"), "eliminated player is in eliminated list");

            Assert.IsNotNull(tr.playResult);
            Assert.IsTrue(tr.playResult.Exists(x => x.returnColor() == "p1"), "p1 not in the winning list of players");
            Assert.AreEqual(tr.playResult.Count, 1);
        }
Ejemplo n.º 16
0
        public void PlaceTilePlacesTile()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);

            SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer());
            Board   b  = new Board();

            p1.setPosn(new Posn(0, 0, 3));

            Posn endPos = b.placeTile(p1, t1);

            Assert.IsTrue(endPos.returnCol() == 1);
            Assert.IsTrue(endPos.returnRow() == 0);
            Assert.IsTrue(endPos.returnLocationOnTile() == 3);
            Assert.IsTrue(b.occupied(0, 1));
        }
Ejemplo n.º 17
0
        public void MakeAMoveCauseMultiplePlayersToMove()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 2, 1, 6, 3, 5, 4, 7);
            Tile          t2   = test.makeTile(0, 1, 2, 7, 3, 4, 5, 6);

            Admin a = new Admin();
            Board b = new Board();

            SPlayer p1 = new SPlayer("p1", new List <Tile>());

            p1.setPosn(new Posn(1, 0, 2));

            SPlayer p2 = new SPlayer("p2", new List <Tile>());

            p2.setPosn(new Posn(0, 1, 5));

            SPlayer p3 = new SPlayer("p3", new List <Tile>());

            p3.setPosn(new Posn(1, 2, 6));

            b.registerPlayer(p1);
            b.registerPlayer(p2);
            b.registerPlayer(p3);

            b.grid[1, 2] = t2;

            TurnResult tr          = a.playATurn(b, t1);
            Posn       playerPosn0 = tr.currentPlayers[0].getPlayerPosn();
            Posn       playerPosn1 = tr.currentPlayers[1].getPlayerPosn();
            Posn       playerPosn2 = tr.currentPlayers[2].getPlayerPosn();

            Assert.IsTrue(playerPosn0.returnRow() == 1);
            Assert.IsTrue(playerPosn0.returnCol() == 2);
            Assert.IsTrue(playerPosn0.returnLocationOnTile() == 2);

            Assert.IsTrue(playerPosn1.returnRow() == 1);
            Assert.IsTrue(playerPosn1.returnCol() == 1);
            Assert.IsTrue(playerPosn1.returnLocationOnTile() == 5);

            Assert.IsTrue(playerPosn2.returnRow() == 1);
            Assert.IsTrue(playerPosn2.returnCol() == 1);
            Assert.IsTrue(playerPosn2.returnLocationOnTile() == 4);

            Assert.IsNull(tr.playResult);
        }
Ejemplo n.º 18
0
        public void MakeMoveWhereMultiplePlayersEliminated()
        {
            Admin a = new Admin();
            Board b = new Board();

            TestScenerios test = new TestScenerios();

            //tile to be placed
            Tile t1 = test.makeTile(7, 0, 6, 1, 5, 4, 2, 3);

            //tile the player is on
            Tile t2 = test.makeTile(1, 3, 0, 5, 2, 7, 4, 6);

            test.putTileOnBoard(t2, b, 1, 1);

            //players to be eliminated
            SPlayer elim1 = new SPlayer("blue", new List <Tile>());

            b.addPlayerToBoard(elim1.getColor(), new Posn(0, 0, 2));
            elim1.playerState = SPlayer.State.Playing;
            SPlayer elim2 = new SPlayer("green", new List <Tile>());

            b.addPlayerToBoard(elim2.getColor(), new Posn(0, 0, 3));
            elim2.playerState = SPlayer.State.Playing;
            //player left over
            SPlayer p1 = new SPlayer("hotpink", new List <Tile>());

            b.addPlayerToBoard(p1.getColor(), new Posn(1, 1, 0));
            p1.playerState = SPlayer.State.Playing;

            a.addToActivePlayers(elim1);
            a.addToActivePlayers(elim2);
            a.addToActivePlayers(p1);

            TurnResult tr         = a.playATurn(b, t1);
            Posn       playerPosn = b.getPlayerPosn(tr.currentPlayers[0].getColor());

            Assert.IsTrue(playerPosn.isEqual(new Posn(1, 1, 3)));
            Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.getColor() == "blue"), "eliminated player is in eliminated list");
            Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.getColor() == "green"), "eliminated player is in eliminated list");

            Assert.IsNotNull(tr.playResult);
            Assert.IsTrue(tr.playResult.Exists(x => x.getColor() == "hotpink"), "p1 not in the winning list of players");
            Assert.AreEqual(tr.playResult.Count, 1);
        }
Ejemplo n.º 19
0
        public void MakingAMoveFromTheEdge()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);

            Admin a = new Admin();
            Board b = new Board();

            SPlayer p1 = new SPlayer("p1", new List <Tile>());

            p1.setPosn(new Posn(0, -1, 3));

            b.registerPlayer(p1);

            TurnResult tr         = a.playATurn(b, t1);
            Posn       playerPosn = tr.currentPlayers[0].getPlayerPosn();

            Assert.IsTrue(playerPosn.returnLocationOnTile() == 3);
            Assert.IsTrue(playerPosn.returnRow() == 0);
            Assert.IsTrue(playerPosn.returnCol() == 0);
        }
Ejemplo n.º 20
0
        public void GenerateRandomStartPosition()
        {
            Posn generatedPosn = AutomatedPlayer.generateRandomStartPosn();
            // One position coordinate must be a phantom coordinate
            Boolean rowIsPhantom = (generatedPosn.returnRow() == -1 ||
                                    generatedPosn.returnRow() == 6);
            Boolean colIsPhantom = (generatedPosn.returnCol() == -1 ||
                                    generatedPosn.returnCol() == 6);

            Assert.IsTrue(rowIsPhantom ^ colIsPhantom);

            // Other position coordinate must be valid board coordinate
            if (rowIsPhantom)
            {
                Assert.IsTrue(generatedPosn.returnCol() >= 0 && generatedPosn.returnCol() <= 5);
            }
            else
            {
                Assert.IsTrue(generatedPosn.returnRow() >= 0 && generatedPosn.returnRow() <= 5);
            }
        }
Ejemplo n.º 21
0
        public void PlayAValidTurnRemovesTileFromDrawPile()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);

            Admin       a        = new Admin();
            List <Tile> drawpile = test.makeDrawPile(t2, t3);
            Board       b        = test.createBoardWithDrawPile(drawpile);

            SPlayer p1    = new SPlayer("p1", new List <Tile>());
            Posn    p1Pos = new Posn(0, 0, 3);

            p1.setPosn(p1Pos);

            SPlayer p2    = new SPlayer("p2", new List <Tile>());
            Posn    p2Pos = new Posn(4, 4, 0);

            p2.setPosn(p2Pos);

            b.registerPlayer(p1);
            b.registerPlayer(p2);

            List <SPlayer> l1 = new List <SPlayer>()
            {
                p1, p2
            };

            List <SPlayer> l2 = new List <SPlayer>();

            TurnResult tmpturn = a.playATurn(b, t1);

            Assert.AreEqual(1, tmpturn.drawPile.Count);
            Assert.IsFalse(tmpturn.drawPile.Exists(x => x.isEqual(t2)));

            List <Tile> hand = tmpturn.currentPlayers[1].returnHand();

            Assert.IsTrue(hand.Exists(x => x.isEqual(t2)));
        }
Ejemplo n.º 22
0
        public void PlayAValidTurnRemovesTileFromDrawPile()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);

            List <Tile> drawpile = test.makeDrawPile(t2, t3);
            Admin       a        = test.createAdminWithDrawPile(drawpile);
            Board       b        = new Board();

            SPlayer p1    = new SPlayer("blue", new List <Tile>());
            Posn    p1Pos = new Posn(0, 0, 3);

            b.addPlayerToBoard(p1.getColor(), p1Pos);

            SPlayer p2    = new SPlayer("hotpink", new List <Tile>());
            Posn    p2Pos = new Posn(4, 4, 0);

            b.addPlayerToBoard(p2.getColor(), p2Pos);

            a.addToActivePlayers(p1);
            a.addToActivePlayers(p2);

            List <SPlayer> l1 = new List <SPlayer>()
            {
                p1, p2
            };

            List <SPlayer> l2 = new List <SPlayer>();

            TurnResult tmpturn = a.playATurn(b, t1);

            Assert.AreEqual(1, tmpturn.drawPile.Count);
            Assert.IsFalse(tmpturn.drawPile.Exists(x => x.isEqualOrRotation(t2)));

            List <Tile> hand = tmpturn.currentPlayers[1].getHand();

            Assert.IsTrue(hand.Exists(x => x.isEqualOrRotation(t2)));
        }
Ejemplo n.º 23
0
        public void MakingAMoveFromTheEdge()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);

            Admin a = new Admin();
            Board b = new Board();

            SPlayer p1    = new SPlayer("blue", new List <Tile>());
            Posn    p1Pos = new Posn(0, -1, 3);

            b.addPlayerToBoard(p1.getColor(), p1Pos);

            a.addToActivePlayers(p1);

            TurnResult tr = a.playATurn(b, t1);

            Posn newp1Pos = b.getPlayerPosn(a.getFirstActivePlayer().getColor());

            Assert.IsTrue(new Posn(0, 0, 3).isEqual(newp1Pos));
            //Posn playerPosn = tr.currentPlayers[0].getPlayerPosn();
        }
Ejemplo n.º 24
0
        public void MakeAMoveCauseMultiplePlayersToMove()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 2, 1, 6, 3, 5, 4, 7);
            Tile          t2   = test.makeTile(0, 1, 2, 7, 3, 4, 5, 6);

            Admin a = new Admin();
            Board b = new Board();

            SPlayer p1 = new SPlayer("blue", new List <Tile>());

            b.addPlayerToBoard(p1.getColor(), new Posn(1, 0, 2));

            SPlayer p2 = new SPlayer("green", new List <Tile>());

            b.addPlayerToBoard(p2.getColor(), new Posn(0, 1, 5));

            SPlayer p3 = new SPlayer("hotpink", new List <Tile>());

            b.addPlayerToBoard(p3.getColor(), new Posn(1, 2, 6));

            a.addToActivePlayers(p1);
            a.addToActivePlayers(p2);
            a.addToActivePlayers(p3);

            b.placeTileAt(t2, 1, 2);

            TurnResult tr          = a.playATurn(b, t1);
            Posn       playerPosn0 = b.getPlayerPosn(tr.currentPlayers[0].getColor());
            Posn       playerPosn1 = b.getPlayerPosn(tr.currentPlayers[1].getColor());
            Posn       playerPosn2 = b.getPlayerPosn(tr.currentPlayers[2].getColor());

            Assert.IsTrue(playerPosn0.isEqual(new Posn(1, 2, 2)));
            Assert.IsTrue(playerPosn1.isEqual(new Posn(1, 1, 5)));
            Assert.IsTrue(playerPosn2.isEqual(new Posn(1, 1, 4)));

            Assert.IsNull(tr.playResult);
        }
Ejemplo n.º 25
0
        public void MakeAMoveWhenTileIsRotated()
        {
            Admin          a      = new Admin();
            Board          b      = new Board();
            List <SPlayer> inGame = new List <SPlayer>();

            SPlayer p1 = new SPlayer("blue", new List <Tile>());

            b.addPlayerToBoard(p1.getColor(), new Posn(1, 1, 3));
            a.addToActivePlayers(p1);
            inGame.Add(p1);

            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 3, 6, 4, 7, 2, 1, 5);

            Tile rotatedTile = t1.rotate();

            TurnResult tr         = a.playATurn(b, rotatedTile);
            Posn       playerPosn = b.getPlayerPosn(tr.currentPlayers[0].getColor());

            Assert.IsTrue(playerPosn.isEqual(new Posn(1, 2, 0)));
            Assert.IsTrue(tr.currentPlayers.Exists(x => x.getColor() == "blue"), "p1 not in winning players");
        }
Ejemplo n.º 26
0
        public void xmlToPosn()
        {
            XElement xmlPosn = new XElement("pawn-loc",
                                            new XElement("h", ""),
                                            new XElement("n", 1),
                                            new XElement("n", 4));
            Posn        posnExpected1 = new Posn(1, 2, 0);
            Posn        posnExpected2 = new Posn(0, 2, 5);
            List <Posn> expected      = new List <Posn> {
                posnExpected1, posnExpected2
            };

            List <Posn> actual = XMLDecoder.xmlToPosn(xmlPosn);

            Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected1)));
            Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected2)));
            Assert.AreEqual(actual.Count, expected.Count);



            XElement xmlPosn2 = new XElement("pawn-loc",
                                             new XElement("v", ""),
                                             new XElement("n", 3),
                                             new XElement("n", 6));

            posnExpected1 = new Posn(3, 2, 2);
            posnExpected2 = new Posn(3, 3, 7);
            expected      = new List <Posn> {
                posnExpected1, posnExpected2
            };

            actual = XMLDecoder.xmlToPosn(xmlPosn2);
            Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected1)));
            Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected2)));
            Assert.AreEqual(actual.Count, expected.Count);
        }
Ejemplo n.º 27
0
        public void Player1MoveCausesPlayer2EliminationBeforeFirstTurn()
        {
            TestScenerios test  = new TestScenerios();
            Tile          t1    = test.makeTile(0, 2, 1, 5, 3, 4, 6, 7);
            Board         board = new Board();
            Admin         admin = new Admin();

            SPlayer p1 = test.createPlayerAtPos("blue", new List <Tile>(), new RandomPlayer(), new Posn(5, 6, 7), board);

            SPlayer p2 = test.createPlayerAtPos("green", new List <Tile>(), new RandomPlayer(), new Posn(5, 6, 6), board);

            admin.addToActivePlayers(p1);
            admin.addToActivePlayers(p2);

            TurnResult tr = admin.playATurn(board, t1);

            Posn p1EndPosExpected = new Posn(5, 5, 0);

            Posn p1EndPosActual = board.getPlayerPosn(tr.currentPlayers[0].getColor());

            Assert.IsTrue(p1EndPosExpected.isEqual(p1EndPosActual));
            Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.getColor() == "green"));
            Assert.IsTrue(tr.playResult.Exists(x => x.getColor() == "blue"));
        }
Ejemplo n.º 28
0
        public void PlayAValidTurnChangesOrderOfInGamePlayers()
        {
            TestScenerios test = new TestScenerios();
            Tile          t1   = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7);
            Tile          t2   = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7);
            Tile          t3   = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6);

            Admin       a        = new Admin();
            List <Tile> drawpile = test.makeDrawPile(t2, t3);
            Board       b        = test.createBoardWithDrawPile(drawpile);

            SPlayer p1    = new SPlayer("p1", new List <Tile>());
            Posn    p1Pos = new Posn(0, 0, 3);

            p1.setPosn(p1Pos);
            SPlayer p2    = new SPlayer("p2", new List <Tile>());
            Posn    p2Pos = new Posn(4, 4, 0);

            p2.setPosn(p2Pos);

            b.registerPlayer(p1);
            b.registerPlayer(p2);

            List <SPlayer> l1 = new List <SPlayer>()
            {
                p1, p2
            };

            List <SPlayer> l2 = new List <SPlayer>();

            TurnResult tmpturn = a.playATurn(b, t1);

            Assert.IsTrue(tmpturn.currentPlayers[0].returnColor() == "p2");
            Assert.IsTrue(tmpturn.currentPlayers[1].returnColor() == "p1");
            Assert.IsTrue(tmpturn.currentPlayers.Count == 2);
        }
Ejemplo n.º 29
0
        public void RunATournament()
        {
            int numOfTournaments = 10;
            int randomWins       = 0;
            int lstSymWins       = 0;
            int mostSymWins      = 0;

            for (int i = 0; i < numOfTournaments; i++)
            {
                Admin       a        = new Admin();
                List <Tile> drawPile = a.initializeDrawPile("drawPilepaths.txt");
                Board       b        = new Board();
                b.drawPile = drawPile;

                List <string> allPlayers = new List <string>()
                {
                    "blue", "hotpink", "green"
                };

                SPlayer randomPlayer = new SPlayer(allPlayers[0], new List <Tile>(), new RandomPlayer());
                randomPlayer.initialize(b);
                randomPlayer.placePawn(b);
                SPlayer leastSymPlayer = new SPlayer(allPlayers[1], new List <Tile>(), new LeastSymmetricPlayer());
                leastSymPlayer.initialize(b);
                leastSymPlayer.placePawn(b);
                SPlayer mostSymPlayer = new SPlayer(allPlayers[2], new List <Tile>(), new MostSymmetricPlayer());
                mostSymPlayer.initialize(b);
                mostSymPlayer.placePawn(b);

                a.dealTiles(new List <SPlayer> {
                    randomPlayer, leastSymPlayer, mostSymPlayer
                }, b);
                List <SPlayer> winners = null;

                foreach (string color in b.getPlayerOrder())
                {
                    Posn tempPosn = b.getPlayerPosn(color);
                    Debug.WriteLine(color + " is at:   " +
                                    string.Format("{0} {1} {2}", tempPosn.returnRow(),
                                                  tempPosn.returnCol(),
                                                  tempPosn.returnLocationOnTile()));
                }

                SPlayer currentPlayer = b.getFirstActivePlayer();
                Tile    playTile      = currentPlayer.playTurn(b, drawPile.Count);
                Debug.WriteLine(currentPlayer.returnColor() + " Turn");
                Debug.WriteLine("Playing Tile:");
                Debug.WriteLine(playTile.paths[0].loc1 + " " + playTile.paths[0].loc2);
                Debug.WriteLine(playTile.paths[1].loc1 + " " + playTile.paths[1].loc2);
                Debug.WriteLine(playTile.paths[2].loc1 + " " + playTile.paths[2].loc2);
                Debug.WriteLine(playTile.paths[3].loc1 + " " + playTile.paths[3].loc2);
                TurnResult tr = a.playATurn(b, playTile);
                //Debug.WriteLine("Eliminated: ");
                foreach (SPlayer p1 in tr.eliminatedPlayers)
                {
                    //Debug.WriteLine(p1.returnColor());
                }
                while (winners == null)
                {
                    foreach (string color in b.getPlayerOrder())
                    {
                        Posn tempPosn = b.getPlayerPosn(color);
                        Debug.WriteLine(color + " is at:   " +
                                        string.Format("{0} {1} {2}", tempPosn.returnRow(),
                                                      tempPosn.returnCol(),
                                                      tempPosn.returnLocationOnTile()));
                    }
                    SPlayer p = b.getFirstActivePlayer();
                    playTile = p.playTurn(b, drawPile.Count);
                    Debug.WriteLine(p.returnColor() + " Turn");
                    Debug.WriteLine("Playing Tile:");
                    Debug.WriteLine(playTile.paths[0].loc1 + " " + playTile.paths[0].loc2);
                    Debug.WriteLine(playTile.paths[1].loc1 + " " + playTile.paths[1].loc2);
                    Debug.WriteLine(playTile.paths[2].loc1 + " " + playTile.paths[2].loc2);
                    Debug.WriteLine(playTile.paths[3].loc1 + " " + playTile.paths[3].loc2);

                    tr = a.playATurn(tr.b, playTile);
                    Debug.WriteLine("Eliminated: ");
                    foreach (SPlayer p1 in tr.eliminatedPlayers)
                    {
                        Debug.WriteLine(p1.returnColor());
                    }
                    winners = tr.playResult;
                }

                foreach (SPlayer p in winners)
                {
                    if (p.returnColor() == "blue")
                    {
                        randomWins++;
                    }
                    else if (p.returnColor() == "hotpink")
                    {
                        lstSymWins++;
                    }
                    else
                    {
                        mostSymWins++;
                    }
                    Debug.WriteLine(p.returnColor() + " has won!");
                }
            }
            Console.WriteLine("Random Player Wins: " + randomWins + "/" + numOfTournaments);
            Console.WriteLine("Least Symmetric Player Wins: " + lstSymWins + "/" + numOfTournaments);
            Console.WriteLine("Most Symmetric Player Wins: " + mostSymWins + "/" + numOfTournaments);
        }
Ejemplo n.º 30
0
        public void PosnIsOnTheEdge()
        {
            Board      board   = new Board();
            List <int> edgeRow = new List <int> {
                0, 5
            };
            List <int> edgeCol = new List <int> {
                0, 5
            };
            List <Posn> edgePosn = new List <Posn>();

            foreach (int row in edgeRow)
            {
                if (row == 0)
                {
                    for (int col = 0; col < 6; col++)
                    {
                        edgePosn.Add(new Posn(row, col, 0));
                        edgePosn.Add(new Posn(row, col, 1));
                    }
                }

                if (row == 5)
                {
                    for (int col = 0; col < 6; col++)
                    {
                        edgePosn.Add(new Posn(row, col, 4));
                        edgePosn.Add(new Posn(row, col, 5));
                    }
                }
            }

            foreach (int col in edgeCol)
            {
                if (col == 0)
                {
                    for (int row = 0; row < 6; row++)
                    {
                        edgePosn.Add(new Posn(row, col, 6));
                        edgePosn.Add(new Posn(row, col, 7));
                    }
                }

                if (col == 5)
                {
                    for (int row = 0; row < 6; row++)
                    {
                        edgePosn.Add(new Posn(row, col, 2));
                        edgePosn.Add(new Posn(row, col, 3));
                    }
                }
            }

            for (int row = -1; row <= 6; row++)
            {
                for (int col = -1; col <= 6; col++)
                {
                    for (int loc = 0; loc <= 8; loc++)
                    {
                        Posn checkPosn = new Posn(row, col, loc);
                        if (edgePosn.Exists(x => x.isEqual(checkPosn)))
                        {
                            Assert.IsTrue(board.isElimPosn(checkPosn));
                        }
                        else
                        {
                            Assert.IsFalse(board.isElimPosn(checkPosn));
                        }
                    }
                }
            }
        }