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(); ////// Заглушка } }
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(); }
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; } } }
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); } }
public bool checkSamePosition(string firstObj, string secondObj) { return(neoDataLoader.GetParameterValue(firstObj, "X").Equals(neoDataLoader.GetParameterValue(secondObj, "X")) && neoDataLoader.GetParameterValue(firstObj, "Y").Equals(neoDataLoader.GetParameterValue(secondObj, "Y"))); }