示例#1
0
        private static void testMoveOut(ILudoEngine ludoEngine)
        {
            while (true)
            {
                int result;
                do
                {
                    result = ludoEngine.TossDice();
                } while (result != 6);
                Console.WriteLine("Player " + ludoEngine.CurrentPlayer + " finally got a 6");
                Console.WriteLine("Before moving out: " + ludoEngine.Squares[(ludoEngine.CurrentPlayer - 1) * 10].Occupied);
                Console.WriteLine("Moving out token...");
                ludoEngine.MoveOutToken();
                Console.WriteLine("After moving out: " + ludoEngine.Squares[(ludoEngine.CurrentPlayer - 1) * 10].Occupied);
                Console.ReadKey();
            }


            //int currentPlayer = ludoEngine.CurrentPlayer;
            //Console.WriteLine("Player " + ludoEngine.CurrentPlayer + "'s start position occupied: " + ludoEngine.Squares[i*10].Occupied);

            //    Console.WriteLine("Moving out player " + ludoEngine.CurrentPlayer + "'s token");
            //    ludoEngine.MoveOutToken();

            //Console.WriteLine("Player " + ludoEngine.CurrentPlayer + "'s start position occupied: " + ludoEngine.Squares[i*10].Occupied);
            //Console.WriteLine("It is now player " + ludoEngine.CurrentPlayer + "'s turn");
            //Console.WriteLine();
        }
示例#2
0
 private static void testSquares(ILudoEngine ludoEngine)
 {
     Square[] squares = ludoEngine.Squares;
     for (int i = 0; i < squares.Length; i++)
     {
         Console.WriteLine((i + 1) + ": " + squares[i].TokenColor);
     }
 }
示例#3
0
 private static void testHomeYards(ILudoEngine ludoEngine)
 {
     HomeYard[] homeYards = ludoEngine.HomeYards;
     for (int i = 0; i < homeYards.Length; i++)
     {
         Console.WriteLine("Home yard " + (i + 1) + ": " + homeYards[i].TokenColor);
         Console.WriteLine("Is full: " + homeYards[i].IsFull());
     }
 }
示例#4
0
 private static void testToss(ILudoEngine ludoEngine)
 {
     for (int i = 0; i < 10; i++)
     {
         Console.Write("Player " + ludoEngine.CurrentPlayer + " rolls dice: ");
         int result = ludoEngine.TossDice();
         Console.WriteLine(result);
         Console.WriteLine("This means new current player is: Player " + ludoEngine.CurrentPlayer);
         Console.WriteLine();
     }
 }
示例#5
0
        public LudoGUI(ILudoEngine engine)
        {
            _engine = engine;
            InitializeComponent();

            _screenWidth  = SystemParameters.PrimaryScreenWidth;
            _screenHeight = SystemParameters.WorkArea.Bottom;

            if (_engine.DiceHistory.Count != 0)
            {
                _diceResult = _engine.DiceHistory.Last();
            }

            initGameboard();
            updateGraphics();
        }
            public void SaveState(ILudoEngine ludoEngine)
            {
                if (ludoEngine.GameOver)
                {
                    File.Delete(Path.GetFullPath(FullPath));
                    return;
                }

                //Remove all child elements in order to update new ones
                xmlDoc.RemoveAll();

                //Xml declaration
                XmlDeclaration xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);

                xmlDoc.AppendChild(xmlDecl);

                XmlNode ludoGameStateNode = xmlDoc.CreateElement("LudoGameState");
                //Player count
                XmlNode playerCountNode = xmlDoc.CreateElement("PlayerCount");

                playerCountNode.AppendChild(xmlDoc.CreateTextNode(ludoEngine.PlayerCount.ToString()));
                ludoGameStateNode.AppendChild(playerCountNode);

                //Current player
                XmlNode currentPlayerNode = xmlDoc.CreateElement("CurrentPlayer");

                currentPlayerNode.AppendChild(xmlDoc.CreateTextNode(ludoEngine.CurrentPlayer.ToString()));
                ludoGameStateNode.AppendChild(currentPlayerNode);

                //Dice tossed
                XmlNode diceTossedNode = xmlDoc.CreateElement("DiceTossed");

                diceTossedNode.AppendChild(xmlDoc.CreateTextNode(ludoEngine.DiceTossed.ToString()));
                ludoGameStateNode.AppendChild(diceTossedNode);

                //Game over
                XmlNode gameOverNode = xmlDoc.CreateElement("GameOver");

                gameOverNode.AppendChild(xmlDoc.CreateTextNode(ludoEngine.GameOver.ToString()));
                ludoGameStateNode.AppendChild(gameOverNode);

                //Dice history
                XmlNode diceHistoryNode = xmlDoc.CreateElement("DiceHistory");

                foreach (int result in ludoEngine.DiceHistory)
                {
                    XmlNode resultNode = xmlDoc.CreateElement("DiceResult");
                    resultNode.AppendChild(xmlDoc.CreateTextNode(result.ToString()));
                    diceHistoryNode.AppendChild(resultNode);
                }
                ludoGameStateNode.AppendChild(diceHistoryNode);

                //Winners
                XmlNode winnersNode = xmlDoc.CreateElement("Winners");

                foreach (int winner in ludoEngine.Winners)
                {
                    XmlNode winnerNode = xmlDoc.CreateElement("Winner");
                    winnerNode.AppendChild(xmlDoc.CreateTextNode(winner.ToString()));
                    winnersNode.AppendChild(winnerNode);
                }
                ludoGameStateNode.AppendChild(winnersNode);

                //Squares
                XmlNode squaresNode = xmlDoc.CreateElement("Squares");

                foreach (Square square in ludoEngine.Squares)
                {
                    XmlNode squareNode = xmlDoc.CreateElement("Square");
                    XmlNode colorNode  = xmlDoc.CreateElement("TokenColor");
                    colorNode.AppendChild(xmlDoc.CreateTextNode(square.TokenColor.ToString()));
                    squareNode.AppendChild(colorNode);
                    XmlNode tokenNode = xmlDoc.CreateElement("Token");
                    if (square.Occupied)
                    {
                        XmlNode tokenColorNode = xmlDoc.CreateElement("TokenColor");
                        tokenColorNode.AppendChild(xmlDoc.CreateTextNode(square.Token.TokenColor.ToString()));
                        tokenNode.AppendChild(tokenColorNode);
                        XmlNode tokenIDNode = xmlDoc.CreateElement("TokenID");
                        tokenIDNode.AppendChild(xmlDoc.CreateTextNode(square.Token.TokenID.ToString()));
                        tokenNode.AppendChild(tokenIDNode);
                        XmlNode stepCountNode = xmlDoc.CreateElement("StepCount");
                        stepCountNode.AppendChild(xmlDoc.CreateTextNode(square.Token.StepCount.ToString()));
                        tokenNode.AppendChild(stepCountNode);
                    }
                    squareNode.AppendChild(tokenNode);
                    squaresNode.AppendChild(squareNode);
                }
                ludoGameStateNode.AppendChild(squaresNode);

                //Home yards
                XmlNode homeYardsNode = xmlDoc.CreateElement("HomeYards");

                foreach (HomeYard homeYard in ludoEngine.HomeYards)
                {
                    XmlNode homeYardNode = xmlDoc.CreateElement("HomeYard");
                    XmlNode colorNode    = xmlDoc.CreateElement("TokenColor");
                    colorNode.AppendChild(xmlDoc.CreateTextNode(homeYard.TokenColor.ToString()));
                    homeYardNode.AppendChild(colorNode);
                    XmlNode tokensNode = xmlDoc.CreateElement("Tokens");
                    foreach (Token token in homeYard.Tokens)
                    {
                        XmlNode tokenNode   = xmlDoc.CreateElement("Token");
                        XmlNode tokenIDNode = xmlDoc.CreateElement("TokenID");
                        tokenIDNode.AppendChild(xmlDoc.CreateTextNode(token.TokenID.ToString()));
                        tokenNode.AppendChild(tokenIDNode);
                        tokensNode.AppendChild(tokenNode);
                    }
                    homeYardNode.AppendChild(tokensNode);
                    homeYardsNode.AppendChild(homeYardNode);
                }
                ludoGameStateNode.AppendChild(homeYardsNode);

                //Players
                XmlNode playersNode = xmlDoc.CreateElement("Players");

                foreach (Player player in ludoEngine.Players)
                {
                    XmlNode playerNode = xmlDoc.CreateElement("Player");
                    XmlNode colorNode  = xmlDoc.CreateElement("TokenColor");
                    colorNode.AppendChild(xmlDoc.CreateTextNode(player.TokenColor.ToString()));
                    playerNode.AppendChild(colorNode);
                    XmlNode winnerNode = xmlDoc.CreateElement("Winner");
                    winnerNode.AppendChild(xmlDoc.CreateTextNode(player.Winner.ToString()));
                    playerNode.AppendChild(winnerNode);
                    XmlNode finishedTokensNode = xmlDoc.CreateElement("FinishedTokens");
                    finishedTokensNode.AppendChild(xmlDoc.CreateTextNode(player.FinishedTokens.ToString()));
                    playerNode.AppendChild(finishedTokensNode);
                    playersNode.AppendChild(playerNode);
                }
                ludoGameStateNode.AppendChild(playersNode);

                //Add ludo game state node
                xmlDoc.AppendChild(ludoGameStateNode);
                xmlDoc.Save(FullPath);
            }