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); }
[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); } }
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); }
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); } } }
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; } } }
public int GetRecordLimit(MemPlayerRecordTypes rd) { switch (rd) { case MemPlayerRecordTypes.HeroExpPoint: return(ExpTree.GetNextRequiredCard(UserProfile.InfoBasic.Level)); } return(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; } } }
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; } } } }
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(); }
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); }
/// <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); }
//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")); //} }
/// <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; }
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); }
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"); }
private bool CheckNewLevel() { int expNeed = ExpTree.GetNextRequired(Level); if (Exp >= expNeed) { Exp -= expNeed; Level++; return(true); } return(false); }
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)); }
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()); }
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()); }
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); }
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); }
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++; } }
//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); } }
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); }
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))); }
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)); }
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))); }
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)); }
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); }