コード例 #1
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        private void FormulaApply(string[] mas, string id)
        {
            using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
            {
                if (mas.Length != 3)
                {
                    textBox4.Text = "Формула неверная";
                    return;
                }

                string paramValue = neoDataLoader.GetParameterValue(id, mas[0]);
                switch (mas[1])
                {
                case "-=":
                    int result1 = Convert.ToInt32(paramValue) - Convert.ToInt32(mas[2]);
                    neoDataLoader.SetNodeParameter(id, mas[0], result1.ToString());
                    break;

                case "=":
                    neoDataLoader.SetNodeParameter(id, mas[0], mas[2]);
                    break;

                case "+=":
                    int result2 = Convert.ToInt32(paramValue) + Convert.ToInt32(mas[2]);
                    neoDataLoader.SetNodeParameter(id, mas[0], result2.ToString());
                    break;
                }
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        private void FillDataGridView(string agentID)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
            {
                string stateID = neoDataLoader.GetParameterValue(agentID, "Состояние");
                parameters.Add("Состояние №", stateID + " ("
                               + neoDataLoader.GetParameterValue(stateID, "name") + ")");
                parameters.Add("Сытость: ", neoDataLoader.GetParameterValue(agentID, "Сытость"));
                parameters.Add("X ", neoDataLoader.GetParameterValue(agentID, "X"));
                parameters.Add("Y ", neoDataLoader.GetParameterValue(agentID, "Y"));
                //List<String> ownedItemsId = neoDataLoader.GetRelatedNodesIdList("Принадлежит", agentID);
                //foreach (string item in ownedItemsId)
                //{
                //    parameters.Add("Владеет предметом " + "Пища"/*neoDataLoader.GetNodeLabels(item).First()*/,
                //                    neoDataLoader.GetParameterValue(item, "Количество"));
                //}
                parameters.Add("Владеет предметом Пища: ", neoDataLoader.GetParameterValue(agentID, "Пища"));
                parameters.Add("Формула на текущем состоянии:", neoDataLoader.GetParameterValue(stateID, "comment"));
                List <String> relatedStatesId = neoDataLoader.GetStatesInWhichNodeGoes(stateID);
                foreach (string state in relatedStatesId)
                {
                    parameters.Add("Переход в состояние " + neoDataLoader.GetParameterValue(state, "name"), neoDataLoader.GetRelationshipBetweenStatementsParameterValue(stateID, state, "comment"));
                }
            }
            //dataGridView1.Rows.Add(parameters)
            foreach (DataGridViewColumn c in dataGridView_agentParameters.Columns)
            {
                c.DefaultCellStyle.Font = new Font("Arial", 18F, GraphicsUnit.Pixel);
            }
            dataGridView_agentParameters.DataSource = parameters.ToArray();
            dataGridView_agentParameters.Refresh();
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        public void Algorithm()
        {
            using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
            {
                agentInstances = neoDataLoader.GetAllInstancesIdByName("Агент");
            }

            foreach (string agentID in agentInstances)
            {
                // Получаем формулу на текущем состоянии

                string currentStateID;
                string currentStateFormula;
                using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
                {
                    string        stateID         = neoDataLoader.GetParameterValue(agentID, "Состояние");
                    List <String> relatedStatesId = neoDataLoader.GetStatesInWhichNodeGoes(stateID);
                    foreach (string state in relatedStatesId)
                    {
                        if (ExpressionChecker(neoDataLoader.GetRelationshipBetweenStatementsParameterValue(stateID, state, "comment")))     // Состояние меняется каждый раз ДОПИШИ ПАРСЕР ФОРМУЛ я хочу спать, не могу
                        {
                            neoDataLoader.SetNodeParameter(agentID, "Состояние", state);
                        }
                        foreach (string food in neoDataLoader.GetAllNodesWithNameInstancesId("Пища")) //Тут состояние не менятся на покой пока не будет найдена пища
                        {
                            if (checkSamePosition(food, agentID))
                            {
                                neoDataLoader.SetNodeParameter(agentID, "Состояние", "0");
                            }
                        }
                    }
                    currentStateID      = neoDataLoader.GetParameterValue(agentID, "Состояние");
                    currentStateFormula = neoDataLoader.GetParameterValue(currentStateID, "comment");
                }
                // Парсим формулу и применяем её (надо сделать проверку может ли она быть применена)

                FormulaParser(currentStateFormula, agentID);
                try
                {
                    if (currentStateID.Equals("1"))
                    { //1 = Перемещение (Это костыль)
                        neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text);
                        moving(System.Convert.ToInt32(neoDataLoader.GetParameterValue(agentID, "X")), System.Convert.ToInt32(neoDataLoader.GetParameterValue(agentID, "Y")), agentID);
                    }
                }
                catch (FormatException)
                {
                    // the FormatException is thrown when the string text does
                    // not represent a valid integer.
                }
                catch (OverflowException)
                {
                    // the OverflowException is thrown when the string is a valid integer,
                    // but is too large for a 32 bit integer.  Use Convert.ToInt64 in
                    // this case.
                }
                //Здесь делаем проверку перехода в другое состояние и, если можем перейти, переходим
                TransitionParser(); ////// Заглушка
            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: Lomotkov/modelExecutor
 public MainForm()
 {
     InitializeComponent();
     chartWorkObject = new ChartWork();
     agentInstances  = new List <string>();
     neoDataLoader   = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text);
 }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        public void moving(int X, int Y, string agentId)
        {
            neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text);
            string neededItem = searchNeededItem(X, Y, agentId, "Объект");

            if (neededItem != null)
            {
                movingToItem(X, Y, agentId, neededItem);
            }
            neoDataLoader.SetNodeParameter(agentId, "X", (X += rnd.Next(2)).ToString());
            neoDataLoader.SetNodeParameter(agentId, "Y", (Y += rnd.Next(2)).ToString());
        }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
        private void button_connect_Click(object sender, EventArgs e)
        {
            try
            {
                neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text);
                this.label_connectionState.Text = "Успешно подключено.";
            }

            catch (Exception ex)
            {
                this.label_connectionState.Text = "Не удалось подключиться.\nПроверьте введённые данные\nи подключение к интернету.";
            }
        }
コード例 #7
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
 public double CalculateAverageSatiety()
 {
     using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
     {
         List <string> agentsID = neoDataLoader.GetAllInstancesIdByName("Агент");
         double        sum      = 0;
         foreach (string agent in agentsID)
         {
             sum += Convert.ToDouble(neoDataLoader.GetParameterValue(agent, "Сытость"));
         }
         sum /= agentsID.Count();
         return(sum);
     }
 }
コード例 #8
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
 private void Output()
 {
     using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
     {
         textBox4.Text  = neoDataLoader.GetNumberOfAgents();
         agentInstances = new List <string>();
         agentInstances = neoDataLoader.GetAllInstancesIdByName("Агент");
         this.listBox_Agents.Items.Clear();
         foreach (String str in agentInstances)
         {
             this.listBox_Agents.Items.Add("Человек. ID: " + str);
         }
         this.dataGridView_agentParameters.DataSource = new object();
     }
 }
コード例 #9
0
ファイル: MainForm.cs プロジェクト: bimaxd/modelExecutor
 public double CalculateAverageFood() // Здесь дичайшие костыли
 {
     using (neoDataLoader = new NeoDataLoader("bolt://localhost:" + textBox1.Text, textBox2.Text, textBox3.Text))
     {
         List <string> agentsID = neoDataLoader.GetAllInstancesIdByName("Агент");
         double        sum      = 0;
         foreach (string agent in agentsID)
         {
             sum += Convert.ToDouble(
                 neoDataLoader.GetStatementResult(
                     "match(n) where id(n) = " + agent + " return n.Пища"
                     ).Single()[0].As <string>());
         }
         sum /= agentsID.Count();
         return(sum);
     }
 }