コード例 #1
0
        ///////////////////////////////////////////////////////////////////////////////////
        #region funcs
        private string CalcRes(string s)
        {
            Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser();
            parser.OperatorList = new List <string>()
            {
                "˄", "˅", "⊕", "→", "←", "↔", "↓", "|", "-"
            };

            //  operators parse
            parser.OperatorAction.Add("˄", delegate(decimal x1, decimal x2)
            {
                return(F1Conjunction(x1, x2));
            });

            parser.OperatorAction.Add("˅", delegate(decimal x1, decimal x2)
            {
                return(F7Disjunction(x1, x2));
            });

            parser.OperatorAction.Add("⊕", delegate(decimal x1, decimal x2)
            {
                return(F6SumMod2(x1, x2));
            });

            parser.OperatorAction.Add("→", delegate(decimal x1, decimal x2)
            {
                return(F13Implication(x1, x2));
            });

            parser.OperatorAction.Add("←", delegate(decimal x1, decimal x2)
            {
                return(F11ImplicationInvert(x1, x2));
            });

            parser.OperatorAction.Add("↔", delegate(decimal x1, decimal x2)
            {
                return(F9Equivalence(x1, x2));
            });

            parser.OperatorAction.Add("↓", delegate(decimal x1, decimal x2)
            {
                return(F8Peirce(x1, x2));
            });

            parser.OperatorAction.Add("|", delegate(decimal x1, decimal x2)
            {
                return(F14Sheffer(x1, x2));
            });

            // function parse (NotX)
            parser.LocalFunctions.Add("!", delegate(decimal[] input)
            {
                return(F12NotX1(input[0]));
            });

            return(Convert.ToString(parser.Parse(s)));
        }
コード例 #2
0
        public int GetCostValue(Attack a)
        {
            Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser();

            parser.LocalVariables.Add("LVL", LVL);
            parser.LocalVariables.Add("HP", HP);

            return((int)parser.Parse(a.costFormula));
        }
コード例 #3
0
        /// <summary>
        /// Returns the value from an attack, based on the attack's formula
        /// </summary>
        /// <param name="attack"> Attack of object </param>
        /// <returns> Integer amount </returns>
        public int GetAttackValue(Attack a)
        {
            Mathos.Parser.MathParser parser = new Mathos.Parser.MathParser();

            parser.LocalVariables.Add("LVL", LVL);
            parser.LocalVariables.Add("HP", HP);
            parser.LocalVariables.Add("CHP", CHP);
            parser.LocalVariables.Add("MP", MP);
            parser.LocalVariables.Add("CMP", CMP);
            parser.LocalVariables.Add("STR", STR);
            parser.LocalVariables.Add("DEX", DEX);
            parser.LocalVariables.Add("INT", INT);
            parser.LocalVariables.Add("LUK", LUK);
            parser.LocalVariables.Add("PATK", PATK);
            parser.LocalVariables.Add("MATK", MATK);
            parser.LocalVariables.Add("PDEF", PDEF);
            parser.LocalVariables.Add("MDEF", MDEF);

            return((int)parser.Parse(a.damageFormula));
        }
コード例 #4
0
 public void UnaryOperators()
 {
     var mp     = new Mathos.Parser.MathParser();
     var result = mp.Parse("-sin(5)");
 }
コード例 #5
0
ファイル: BugFixes.cs プロジェクト: furesoft/Mathos-Parser
 public void UnaryOperators()
 {
     var mp = new Mathos.Parser.MathParser();
     var result = mp.Parse("-sin(5)");
 }
コード例 #6
0
        //добавления новой кривой в список
        private void btn_AddGraphic_Click(object sender, EventArgs e)
        {
            parser = new Mathos.Parser.MathParser();
            PointF[] pt = null;

            if (txb_UsersFunc.Text != "" && txb_LeftLim.Text != "" && txb_RightLim.Text != "")
            {
                double A = 0, B = 0;  //нижний и верхний пределы области построения
                try
                {
                    A = double.Parse(txb_LeftLim.Text);
                    B = double.Parse(txb_RightLim.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Ошибка при вводе значений интервала.", "Ошибка ввода",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                try
                {
                    pt = GetPoints(A, B, 2000, txb_UsersFunc.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Введён неверный формат функции: 'func(x)'.", "Ошибка ввода",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                catch (KeyNotFoundException)
                {
                    MessageBox.Show("Функция такого вида не присутствует в списке.", "Ошибка ввода",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                Curves curve1;
                Color  curveColor = CurveColor;

                curve1 = new Curves(pt, curveColor, Legend: txb_UsersFunc.Text);
                DialogResult result;
                try
                {
                    MainForm.graph.AddCurve(curve1);
                    AddGraphToList(txb_UsersFunc.Text, curve1.CurveColor);
                    RefreshPanel();
                }
                catch (ArgumentException ex)
                {
                    result = MessageBox.Show(ex.Message + "\nВсё равно добавить?",
                                             "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (result == DialogResult.Yes)
                    {
                        MainForm.graph.GraphCurves.Add(curve1);
                        AddGraphToList(txb_UsersFunc.Text, curve1.CurveColor);
                        RefreshPanel();
                    }
                }
            }
            else
            {
                return;
            }
        }