Exemple #1
0
        static void Main(string[] args)
        {
            _expStr  = "none";
            _expTree = new ExpTree(_expStr);

            do
            {
                ShowMenu();
                string line = Console.ReadLine();
                switch (line)
                {
                case "1":
                    Menu1();
                    break;

                case "2":
                    Menu2();
                    break;

                case "3":
                    Menu3();
                    break;

                case "4":
                    return;

                default:
                    //Console.WriteLine("Invalid entry");
                    break;
                }
            } while (true);
        }
Exemple #2
0
        [FieldIndex(Index = 28)] public uint MoveBoostRound;                        //快速移动时长

        public void AddExp(int ex)
        {
            if (Level >= ExpTree.MaxLevel)
            {
                return;
            }

            Exp += ex;
            MainTipManager.AddTip(string.Format("|获得|Cyan|{0}||点经验值", ex), "White");
            AchieveBook.CheckByCheckType("exp");

            if (Exp >= ExpTree.GetNextRequired(Level))
            {
                int oldLevel = Level;
                while (CheckNewLevel()) //循环升级
                {
                    OnLevel(Level);
                }

                MainItem.SystemMenuManager.ResetIconState();
                MainForm.Instance.RefreshView();

                MainItem.PanelManager.ShowLevelInfo(oldLevel, UserProfile.InfoBasic.Level);
            }
        }
Exemple #3
0
        private ExpTree expTree;         //global dict

        public Menu(string Expression = " ", string VarName = " ", double VarValue = double.NaN)
        {
            this.expression = Expression;
            this.varName    = VarName;
            this.varValue   = VarValue;
            expTree         = new ExpTree(expression);
        }
Exemple #4
0
        static void Main(string[] args)
        {
            string  exp      = "A1-12-C1";
            bool    decision = true;
            string  input    = "";
            string  variable = "";
            ExpTree exptree  = new ExpTree(exp);

            while (decision)
            {
                Console.WriteLine("Menu (current expression = " + exp + ")");
                Console.WriteLine("1 = Enter a new expression");
                Console.WriteLine("2 = Set a variable value");
                Console.WriteLine("3 = Evaluate tree");
                Console.WriteLine("4 = Quit");
                input = Console.ReadLine();
                if (input == "1")
                {
                    Console.WriteLine("Enter a new expression: ");
                    exp     = Console.ReadLine();
                    exptree = new ExpTree(exp);
                }
                else if (input == "2")
                {
                    Console.WriteLine("Enter variable name: ");
                    exp     = Console.ReadLine();
                    exptree = new ExpTree(exp);
                }
            }
        }
Exemple #5
0
        static void Main(string[] args)
        {
            string  userInput;
            string  value;
            string  currentExpression = "a+b+c";
            double  result;
            bool    exit = false;
            ExpTree tree = new ExpTree(currentExpression);

            while (exit == false)
            {
                Console.WriteLine("Menu (Current Expression = " + currentExpression + ")");
                Console.WriteLine("1 - Enter a new expression");
                Console.WriteLine("2 - Set a variable value");
                Console.WriteLine("3 - Evaluate tree");
                Console.WriteLine("4 - Quit");
                userInput = Console.ReadLine();

                switch (userInput)
                {
                case "1":
                    Console.WriteLine("Write new expression with no spaces: ");
                    currentExpression = Console.ReadLine();
                    tree = new ExpTree(currentExpression);
                    Console.WriteLine("\r\n \r\n");

                    break;

                case "2":
                    Console.WriteLine("What variable do you want to set?");
                    userInput = Console.ReadLine();
                    Console.WriteLine("What value do you want to set: " + userInput + " as?");
                    value = Console.ReadLine();
                    tree.SetVar(userInput, Convert.ToDouble(value));
                    Console.WriteLine("\r\n \r\n");

                    break;

                case "3":
                    Console.WriteLine("Evaluating: " + currentExpression);
                    result = tree.Eval();
                    Console.WriteLine("Result = " + result.ToString());
                    Console.WriteLine("\r\n \r\n");

                    break;

                case "4":
                    Console.WriteLine("Exit");
                    exit = true;
                    break;

                default:
                    Console.WriteLine("Invalid input");
                    Console.WriteLine("Please input '1', '2', '3', or '4'");
                    Console.WriteLine("\r\n \r\n");

                    break;
                }
            }
        }
Exemple #6
0
 public int GetRecordLimit(MemPlayerRecordTypes rd)
 {
     switch (rd)
     {
     case MemPlayerRecordTypes.HeroExpPoint: return(ExpTree.GetNextRequiredCard(UserProfile.InfoBasic.Level));
     }
     return(0);
 }
Exemple #7
0
        public void EvalMultipleOpNodes_WithMissingOpenParenthesisTest()
        {
            double[] Values = { 1326857.19, 38497.509, 89314871.9874, 879.4, 484, 3, 4579.7777, 7453, 8794 };

            ExpTree testTree = new ExpTree(Values[0].ToString() + "-(" + Values[1].ToString() + '+' + Values[2].ToString() + '+'
                                           + Values[3].ToString() + '-' + Values[4].ToString() + "/" + Values[5].ToString() + "+("
                                           + Values[6].ToString() + '+' + Values[7].ToString() + ")*" + Values[8].ToString());
        }
        public void printMenu() //menu
        {
            bool   done = false, accepted = true;
            string temp;
            double value;

            while (done == false)
            {
                do
                {
                    Console.WriteLine("Choose an option:");
                    Console.WriteLine("1. Enter an expression");
                    Console.WriteLine("2. Set a variable value");
                    Console.WriteLine("3. Evaluate the expression to a numerical value");
                    Console.WriteLine("4. Quit");
                    option = Console.ReadLine(); //get the user's choice
                } while ((option != "1") && (option != "2") && (option != "3") && (option != "4"));

                if (option == "1")                        //enter an expression
                {
                    expTree.clearVar();                   //clear old variables before starting a new expression
                    Console.WriteLine("Enter a expression with at most one kind of operator:");
                    expression = Console.ReadLine();      //read in the user's expression
                    expTree    = new ExpTree(expression); //create a new expression tree with user entered expression
                }
                else if (option == "2")                   //set a variable value
                {
                    do
                    {
                        accepted = true;
                        Console.WriteLine("Enter a variable name:");
                        temp = Console.ReadLine(); //read in the variable name
                        if ((temp[0] < 'A') || (temp[0] > 'z'))
                        {
                            Console.WriteLine("The variable name must start with a letter");
                            accepted = false;
                        }
                    } while (accepted == false);
                    Console.WriteLine("Enter the variable value:");
                    value = Convert.ToDouble(Console.ReadLine()); //read in variable value as double
                    expTree.SetVar(temp, value);                  //call set var function to add the name and value to variable dictionary
                }
                else if (option == "3")                           //evaluate an expression
                {
                    if (expTree.getDictionarySize() > 0)          //there are variable values that need to be added to the tree
                    {
                        expTree.resetTree(expression);
                    }
                    value = expTree.Eval();              //call eval function
                    Console.WriteLine("The result of the evaluation was: ");
                    Console.WriteLine(value.ToString()); //print out result of eval function
                }
                else if (option == "4")                  //quit
                {
                    done = true;
                }
            }
        }
Exemple #9
0
        static void menu()
        {
            bool end = false;

            while (end == false)
            {
                Console.WriteLine("Menu (Current Expression = \"" + exp + "\")");
                Console.WriteLine("1 = Enter a new expression");
                Console.WriteLine("2 = Set a variable value");
                Console.WriteLine("3 = Evaluate tree");
                Console.WriteLine("4 = Quit");
                string userInput = Console.ReadLine();


                if (int.TryParse(userInput, out var data))
                {
                    switch (data)
                    {
                    case 1:
                        Console.Write("Enter new expression: ");
                        expTree.Clear();
                        exp     = Console.ReadLine();
                        expTree = new ExpTree(exp);
                        break;

                    case 2:
                        Console.Write("Enter variable name: ");
                        string name  = Console.ReadLine();
                        bool   isInt = false;
                        while (!isInt)
                        {
                            Console.Write("Enter variable value: ");
                            string value = Console.ReadLine();
                            if (double.TryParse(value, out var v))
                            {
                                expTree.SetVar(name, v);
                                isInt = true;
                            }
                            else
                            {
                                Console.WriteLine("Invalid Input");
                            }
                        }
                        break;

                    case 3:
                        double result = expTree.Eval();
                        Console.WriteLine("{0}", result);
                        break;

                    case 4:
                        end = true;
                        break;
                    }
                }
            }
        }
Exemple #10
0
        static void Main(string[] args)
        {
            string  input;
            string  variable;
            string  value;
            string  equation;
            double  result;
            bool    quit = false;
            ExpTree tree = new ExpTree("1+1");

            while (quit == false)
            {
                Console.WriteLine("Menu (Current Expression = " + tree.equation + ") \n");
                Console.WriteLine("\t 1 = Enter a new expression \n");
                Console.WriteLine("\t 2 = Set a variable value \n");
                Console.WriteLine("\t 3 = Evaluate Tree \n");
                Console.WriteLine("\t 4 = Quit");
                input = Console.ReadLine();

                switch (input)
                {
                case "1":
                    Console.WriteLine("Please enter new expression to be evauluated \r\n");
                    equation = Console.ReadLine();
                    tree     = new ExpTree(equation);
                    Console.WriteLine("\r\n \r\n");
                    break;

                case "2":
                    Console.WriteLine("Enter variable name: ");
                    variable = Console.ReadLine();

                    Console.WriteLine("Enter the new value for: " + variable);
                    value = Console.ReadLine();

                    tree.SetVar(variable, Convert.ToDouble(value));
                    break;

                case "3":
                    Console.WriteLine("Evaluating current expression \r\n");
                    result = tree.Eval();
                    Console.WriteLine("Answer = " + result.ToString() + "\r\n \r\n");
                    break;

                case "4":
                    Console.WriteLine("Quitting program");
                    quit = true;
                    break;

                default:
                    Console.WriteLine("Invalid input \r\n \r\n");
                    break;
                }
            }

            Console.ReadLine();
        }
Exemple #11
0
        public void EvalMultiplyTest()
        {
            double Value1 = 1326857.19;
            double Value2 = 38497.509;

            ExpTree testTree = new ExpTree(Value1.ToString() + '*' + Value2.ToString());

            Assert.AreEqual(testTree.Eval(), Value1 * Value2);
        }
Exemple #12
0
        /// <summary>
        /// Parses a complete string and returns the resulting tree and status.
        /// </summary>
        /// <param name="equation">The equation to parse.</param>
        /// <param name="tree">The resulting tree.</param>
        /// <returns>The resulting parsing status.</returns>
        public static ParserStatus Parse(string equation, out ExpTree tree)
        {
            DefaultParser parser = new DefaultParser();
            ParserStatus  result = parser.ParseString(equation);

            // Errors are automatically handled like this
            tree = parser.Tree;
            return(result);
        }
Exemple #13
0
        //evaluate cell accepts a cell as an argument and checks to see if it is an expression
        // or just a string. if it begins with '=' it is an expression and will be evaluated as such.
        //otherwise the text will just be reassigned.
        private void EvaluateCell(Cell cell)
        {
            ss_cell c = cell as ss_cell;

            //cell represents an expression
            if (c.text[0] == '=')
            {
                //chop off  '='
                string   expression = c.text.Substring(1);
                string[] ABC        = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };

                //creates an expression tree based off of the expression
                ExpTree exp = new ExpTree(expression);

                //get a list of the variables
                string[] vars = exp.getVars();

                foreach (string variableName in vars)
                {
                    if (GetCell(variableName) == null) //does not reference an actual cell
                    {
                        break;
                    }
                    setVariable(exp, variableName);
                }
                c.SetValue(exp.Eval().ToString());
                CellPropertyChanged(cell, new PropertyChangedEventArgs("value"));



                //trigger cellpropertychanged
                CellPropertyChanged(cell, new PropertyChangedEventArgs("text"));
            }
            //not an expression
            else
            {
                c.SetValue(c.text);
                CellPropertyChanged(cell, new PropertyChangedEventArgs("value"));
            }

            if (DependencyDict.ContainsKey(c.name))
            {
                foreach (string dependentCell in DependencyDict[c.name])
                {
                    EvaluateCell(GetCell(dependentCell));
                }
            }
            //else
            //{
            //    //just set the value to the text of the node passed in
            //    c.SetValue(c.text);

            //    //event trigger.
            //    CellPropertyChanged(cell, new PropertyChangedEventArgs("value"));

            //}
        }
Exemple #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultParser"/> class.
 /// </summary>
 public DefaultParser()
 {
     _state = ParserState.BEGIN;
     _input = string.Empty;
     _tree  = new ExpTree();
     _activeFunctionParser = null;
     _cache            = string.Empty;
     _parenthesisDepth = 0;
     _position         = 0;
 }
Exemple #15
0
        public void SetVarNoChangeTest()
        {
            string variable      = "A34";
            double assignedValue = 1326857.19;

            ExpTree testTree = new ExpTree(variable);

            testTree.SetVar(variable + '1', assignedValue);
            Assert.AreNotEqual(testTree.Eval(), assignedValue);
        }
Exemple #16
0
        static void Main(string[] args)
        {
            string userInput;

            ExpTree Tree = new ExpTree("5+A2+7");


            //Loop through menu while
            do
            {
                //MENU
                StringBuilder Menu = new StringBuilder();
                Menu.AppendLine("Menu (current expression = \"" + Tree.exp + "\")");
                Menu.AppendLine("   1 = Enter a new expression");
                Menu.AppendLine("   2 = Set a variable value");
                Menu.AppendLine("   3 = Evaluate Tree");
                Menu.AppendLine("   4 = Quit");

                Console.WriteLine(Menu);

                userInput = Console.ReadLine();


                //Enter a new expression means building a new expression tree.
                if (userInput == "1")
                {
                    Console.WriteLine("Enter new expression: ");
                    string expression = Console.ReadLine();
                    Tree = new ExpTree(expression);
                }
                //Set a new variable value
                else if (userInput == "2")
                {
                    Console.Write("Enter variable name: ");
                    string varName = Console.ReadLine();
                    Console.Write("Enter variable value: ");
                    string varValue = Console.ReadLine();
                    double num;
                    //make sure user enters a number
                    while (!double.TryParse(varValue, out num))
                    {
                        Console.Write("Enter variable value: ");
                        varValue = Console.ReadLine();
                    }
                    Tree.SetVar(varName, num);
                }
                //Evaluate the expression
                else if (userInput == "3")
                {
                    Console.WriteLine(Tree.Eval());
                }
            } while (userInput != "4");
        }
Exemple #17
0
        private bool CheckNewLevel()
        {
            int expNeed = ExpTree.GetNextRequired(Level);

            if (Exp >= expNeed)
            {
                Exp -= expNeed;
                Level++;
                return(true);
            }
            return(false);
        }
Exemple #18
0
            public int Compare(DeckCard cx, DeckCard cy)
            {
                int expx = (ExpTree.GetNextRequiredCard(cx.Level) - cx.Exp) * 100 / ExpTree.GetNextRequiredCard(cx.Level);
                int expy = (ExpTree.GetNextRequiredCard(cy.Level) - cy.Exp) * 100 / ExpTree.GetNextRequiredCard(cy.Level);

                if (expx != expy)
                {
                    return(expx.CompareTo(expy));
                }

                return(cx.BaseId.CompareTo(cy.BaseId));
            }
Exemple #19
0
        public void SetVarNodeRootTest()
        {
            // Arrange
            string testVariable = "hhhhhhhhhhh1";
            double testValue    = 1384.34;

            ExpTree testTree = new ExpTree(testVariable);

            testTree.SetVar(testVariable, testValue);

            // Assert
            Assert.AreEqual(testValue, testTree.Eval());
        }
Exemple #20
0
        public void SetVarNodeNonRootTest()
        {
            // Arrange
            string testVariable = "hhhhhhhhhhh1";
            double testValue    = 1384.34;

            ExpTree testTree = new ExpTree(testVariable + "+3454-2348*34/0.5");

            testTree.SetVar(testVariable, testValue);

            // Assert
            Assert.AreEqual(-154825.66, testTree.Eval());
        }
Exemple #21
0
        public void EvalMultipleOpNodes_WithParenthesisTest()
        {
            double[] Values = { 1326857.19, 38497.509, 89314871.9874, 879.4, 484, 3, 4579.7777, 7453, 8794 };

            ExpTree testTree = new ExpTree(Values[0].ToString() + "-(" + Values[1].ToString() + '+' + Values[2].ToString() + '+'
                                           + Values[3].ToString() + '-' + Values[4].ToString() + ")/" + Values[5].ToString() + "+("
                                           + Values[6].ToString() + '+' + Values[7].ToString() + ")*" + Values[8].ToString());

            double expectedOutput = Values[0] - (Values[1] + Values[2] +
                                                 Values[3] - Values[4]) / Values[5] + (
                Values[6] + Values[7]) * Values[8];

            Assert.AreEqual(testTree.Eval(), expectedOutput);
        }
Exemple #22
0
        public void TestSingleConstantExpression()
        {
            const string testExpression    = "pi";
            var          testTree          = new ExpTree(testExpression);
            var          isValidExpression = testTree.IsValidExpression();
            var          value             = testTree.Eval();

            Console.WriteLine("TestSingleConstantExpression:");
            Console.WriteLine(" ExpTree.IsValidExpression() should be true");
            Console.WriteLine("  IsValidExpression() returned {0}", isValidExpression);
            Console.WriteLine(" Expected value: 3.14159265358979");
            Console.WriteLine("  Actual value:  {0}", value);
            Assert.IsTrue(isValidExpression);
            Assert.AreEqual(value, Math.PI);
        }
Exemple #23
0
        public void CardLevelUp(int cardId)
        {
            var card = GetDeckCardById(cardId);

            if (card.BaseId > 0)
            {
                int expNeed = ExpTree.GetNextRequiredCard(card.Level);
                if (card.Exp < expNeed)
                {
                    return;
                }
                card.Exp = (ushort)(card.Exp - expNeed);
                card.Level++;
            }
        }
Exemple #24
0
        //OnPropertyChanged is what is happening when a cell's PropertyChanged event is triggered.
        //it simply evaluates the cell and sends the update to the next layer.
        private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "text")
            {
                ss_cell c = sender as ss_cell;
                RemoveDependencies(c.name);//remove dependencies here
                if (c.text != "" && c.text[0] == '=')
                {
                    ExpTree exp = new ExpTree(c.text.Substring(1));
                    MakeDependencies(c.name, exp.getVars());
                }

                EvaluateCell(sender as Cell);
            }
        }
Exemple #25
0
        public void TestIncompleteOperatorExpression()
        {
            const string testExpression    = "1+";
            var          testTree          = new ExpTree(testExpression);
            var          isValidExpression = testTree.IsValidExpression();
            var          value             = testTree.Eval();

            Console.WriteLine("TestNonsenseStringExpression:");
            Console.WriteLine(" ExpTree.IsValidExpression() should be false");
            Console.WriteLine("  IsValidExpression() returned {0}", isValidExpression);
            Console.WriteLine(" Expected value: 0");
            Console.WriteLine("  Actual value:  {0}", value);
            Assert.IsFalse(isValidExpression);
            Assert.AreEqual(value, 0.0d);
        }
Exemple #26
0
        public void TestSineFunctionExpression()
        {
            const string testExpression    = "SIN(1+1)";
            var          testTree          = new ExpTree(testExpression);
            var          isValidExpression = testTree.IsValidExpression();
            var          value             = testTree.Eval();

            Console.WriteLine("TestSineFunctionExpression:");
            Console.WriteLine(" ExpTree.IsValidExpression() should be true");
            Console.WriteLine("  IsValidExpression() returned {0}", isValidExpression);
            Console.WriteLine(" Expected value: 0.909297426825682");
            Console.WriteLine("  Actual value:  {0}", value);
            Assert.IsTrue(isValidExpression);
            Assert.AreEqual(value, (Math.Sin(1 + 1)));
        }
Exemple #27
0
        public void TestWhitespaceSeparatedExpression()
        {
            const string testExpression    = " 1 + 1 ";
            var          testTree          = new ExpTree(testExpression);
            var          isValidExpression = testTree.IsValidExpression();
            var          value             = testTree.Eval();

            Console.WriteLine("TestWhitespaceSeparatedExpression:");
            Console.WriteLine(" ExpTree.IsValidExpression() should be true");
            Console.WriteLine("  IsValidExpression() returned {0}", isValidExpression);
            Console.WriteLine(" Expected value: 2");
            Console.WriteLine("  Actual value:  {0}", value);
            Assert.IsTrue(isValidExpression);
            Assert.AreEqual(value, (1 + 1));
        }
Exemple #28
0
        public void TestLogFunctionExpression()
        {
            const string testExpression    = "LOG(10^2,10)";
            var          testTree          = new ExpTree(testExpression);
            var          isValidExpression = testTree.IsValidExpression();
            var          value             = testTree.Eval();

            Console.WriteLine("TestLogFunctionExpression:");
            Console.WriteLine(" ExpTree.IsValidExpression() should be true");
            Console.WriteLine("  IsValidExpression() returned {0}", isValidExpression);
            Console.WriteLine(" Expected value: 2");
            Console.WriteLine("  Actual value:  {0}", value);
            Assert.IsTrue(isValidExpression);
            Assert.AreEqual(value, (Math.Log(100, 5 + 5)));
        }
Exemple #29
0
        public void TestCosineFunctionExpression()
        {
            const string testExpression    = "COS(2)*2";
            var          testTree          = new ExpTree(testExpression);
            var          isValidExpression = testTree.IsValidExpression();
            var          value             = testTree.Eval();

            Console.WriteLine("TestCosineFunctionExpression:");
            Console.WriteLine(" ExpTree.IsValidExpression() should be true");
            Console.WriteLine("  IsValidExpression() returned {0}", isValidExpression);
            Console.WriteLine(" Expected value: -0.832293673094285");
            Console.WriteLine("  Actual value:  {0}", value);
            Assert.IsTrue(isValidExpression);
            Assert.AreEqual(value, (Math.Cos(2) * 2));
        }
Exemple #30
0
        public bool CanLevelUp(int cardId)
        {
            var card = GetDeckCardById(cardId);

            if (card.BaseId > 0)
            {
                int expNeed = ExpTree.GetNextRequiredCard(card.Level);
                if (card.Exp < expNeed)
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }