예제 #1
0
파일: Answer.cs 프로젝트: lnl122/Solver2
        // проверяет, ранее уже вбивали это слово или нет
        // вход - структура ответа, структура уровня
        // выход - флаг присутствия ответа в списках
        private static bool checkAlreadyExist(Answ q1, Level lvl)
        {
            List <string> old = new List <string>();

            old.AddRange(lvl.answers_bad);
            old.AddRange(lvl.answers_good);
            foreach (string s in lvl.bonus)
            {
                if (s != "")
                {
                    old.Add(s);
                }
            }
            foreach (string s in lvl.sector)
            {
                if (s != "")
                {
                    old.Add(s);
                }
            }
            bool f1 = old.Contains(q1.wrd);
            bool f2 = old.Contains(q1.wrd2);

            return(f1 || f2);
        }
예제 #2
0
    public void GetAnswJSON(String idk)
    {
        string query = "SELECT [IdOtvet]  ,[Otvet]         FROM [Otvet]where [IdVopr]=" + idk;

        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=dbtest11;User ID=sa;Password=Ise123123;Persist Security Info=True;");


        cn.Open();
        DataTable      tbl = new DataTable();
        SqlDataAdapter da  = new SqlDataAdapter(query, cn);

        da.Fill(tbl);
        List <Answ> q = new List <Answ>();
        int         i = 0;

        foreach (DataRow item in tbl.Rows)
        {
            Answ e = new Answ();
            e.IdOtvet = Convert.ToInt16(item["IdOtvet"].ToString());
            e.Otvet   = item["Otvet"].ToString();



            q.Add(e);
            i = i + 1;
        }
        cn.Close();

        JavaScriptSerializer js = new JavaScriptSerializer();

        Context.Response.Write(js.Serialize(q));
    }
예제 #3
0
        public async Task <bool> CheckIfExists(Answ location)
        {
            await SyncAsync(true);

            var locations = await azureSyncTable.Where(x => x.Id == location.Id).ToListAsync();

            return(locations.Any());
        }
예제 #4
0
 public RedirectViewModel(IAnsDB ansDB)
 {
     answerDB = ansDB;
     if (MyGlobals.answer != null)
     {
         Answ sel = MyGlobals.answer;
         insertAns(sel.AnsFrom, sel.AnsTo, sel.AnsCal, sel.AnsLoc, sel.AnsExtra);
         MyGlobals.answer = null;
     }
     ShowViewModel <NotificationViewModel>();
 }
예제 #5
0
        public async Task <int> InsertAns(string from, string to, string cal, string loc, string extra)
        {
            Answ answer = new Answ
            {
                AnsFrom  = from,
                AnsTo    = to,
                AnsCal   = cal,
                AnsLoc   = loc,
                AnsExtra = extra
            };

            await SyncAsync(true);

            await azureSyncTable.InsertAsync(answer);

            await SyncAsync(false);

            return(1);
        }
예제 #6
0
파일: Answer.cs 프로젝트: lnl122/Solver2
 // постановка слова в очередь
 // вход - Таб, приоритет, слово, 3 номера картинок
 // выход - нет, слово ставиться в очередь
 public static void Add(OneTab T, int priority, string wrd, int i1, int i2 = -1, int i3 = -1)
 {
     if ((i1 != 0) && (i2 != 0) && (i3 != 0))
     {
         int    lvlnum = T.level.number;
         string wrd2   = SetProtect(wrd, i1, T.sProtect);
         Answ   q1     = new Answ();
         q1.OT       = T;
         q1.Tab      = T.Tab;
         q1.Sec      = T.tbSectors;
         q1.Bon      = T.tbBonuses;
         q1.Web      = T.wbPictures;
         q1.Txt      = T.tbTextHints;
         q1.wrd      = wrd;
         q1.wrd2     = wrd2;
         q1.lvlnum   = T.level.number;
         q1.i1       = i1;
         q1.i2       = i2;
         q1.i3       = i3;
         q1.priority = priority;
         Queue.Add(q1);
     }
 }
예제 #7
0
파일: Answer.cs 프로젝트: lnl122/Solver2
        // возвращает наиболее приоритетный ответ
        private static Answ GetNext()
        {
            int prior    = 999;
            int i_prior  = -1;
            int i_level  = -1;
            int i_choice = -1;
            int cnt      = Queue.Count;

            for (int i = 0; i < cnt; i++)
            {
                Answ q1 = Queue[i];
                if (q1.priority < prior)
                {
                    prior = q1.priority; i_prior = i; i_level = -1;
                }
                if ((q1.lvlnum == current_level) && (q1.priority == prior))
                {
                    i_level = i;
                }
            }
            if (i_level == -1)
            {
                i_choice = i_prior;
            }
            else
            {
                i_choice = i_level;
            }
            Answ q2 = Queue[i_choice];

            Queue.Remove(q2);
            if (current_level != q2.lvlnum)
            {
                current_level = q2.lvlnum;
            }
            return(q2);
        }
예제 #8
0
파일: Answer.cs 프로젝트: lnl122/Solver2
        // процесс вбивания. единственный и неповторимый
        public static bool Process()
        {
            // здесь нужно в бесконечном цикле просматривать очередь, выбирать наиболее приоритетные ответы и вбивать их
            // после любых вбитий - перечитывать парсенные данные и обновлять ГУИ
            // после успешных - обновлять все прочее
            bool isTrue = true;

            while (isTrue == true)
            {
                while (Queue.Count < 1)
                {
                    System.Threading.Thread.Sleep(1000);
                }
                // получим следующее
                Answ q1 = GetNext();
                // проверим, ранее вбивали или нет
                Level lvl            = q1.OT.level;
                int   oldsecbon      = lvl.secbon;
                bool  isAlreadyExist = checkAlreadyExist(q1, lvl);
                if (!isAlreadyExist)
                {
                    // попробуем вбить
                    string p1 = Engine.TryOne(q1.lvlnum, q1.wrd2);
                    lvl.UpdateAnswersLevel(p1);
                    q1.OT.level = lvl;
                    // проверим, наш ответ удачен или нет?
                    bool isYes = false;
                    if (lvl.answers_good.Contains(q1.wrd2))
                    {
                        isYes = true;
                    }
                    // были изменения секторов и бонусов?
                    if ((isYes) || (oldsecbon != lvl.secbon))
                    {
                        //очистим очередь от а) ответов с тем же ид б) от ответов с ид = номерам решенных секторов для картинок
                        ClearQueue(q1);
                        //надо обновить GUI
                        string sec1 = ""; for (int i = 0; i < lvl.sectors; i++)
                        {
                            sec1 = sec1 + (i + 1).ToString() + ": " + lvl.sector[i] + "\r\n";
                        }
                        q1.OT.tbSectors.Invoke(new Action(() => { q1.OT.tbSectors.Text = sec1; }));
                        string bon1 = ""; for (int i = 0; i < lvl.bonuses; i++)
                        {
                            bon1 = bon1 + (i + 1).ToString() + ": " + lvl.bonus[i] + "\r\n";
                        }
                        q1.OT.tbBonuses.Invoke(new Action(() => { q1.OT.tbBonuses.Text = bon1; }));
                        // подчистить картинки в ГУИ
                        if (q1.OT.isPicsSect)
                        {
                            string html = "";
                            q1.OT.wbPictures.Invoke(new Action(() => { html = q1.OT.wbPictures.DocumentText; }));
                            string html2 = UpdateHtmlPics(html, lvl);
                            q1.OT.wbPictures.Invoke(new Action(() => { q1.OT.wbPictures.DocumentText = html2; }));
                        }
                    }
                    //нужно выждать какое-то время
                    //System.Threading.Thread.Sleep(rnd1.Next(rnd_min, rnd_max));
                }
            }
            return(true);
        }
예제 #9
0
파일: Answer.cs 프로젝트: lnl122/Solver2
        // очищает очередь от всех ответов, где присутствуют ид из q1
        // вход - ответ, по ид которого очищается очередь
        private static void ClearQueue(Answ q1)
        {
            int i1 = q1.i1;
            int i2 = q1.i2;
            int i3 = q1.i3;
            int j1, j2, j3;
            int cnt = Queue.Count;

            for (int i = cnt - 1; i >= 0; i--)
            {
                j1 = Queue[i].i1;
                j2 = Queue[i].i2;
                j3 = Queue[i].i3;
                bool fl = false;
                if ((i1 != -1) && (i1 == j1))
                {
                    fl = true;
                }
                if ((i1 != -1) && (i1 == j2))
                {
                    fl = true;
                }
                if ((i1 != -1) && (i1 == j3))
                {
                    fl = true;
                }
                if ((i2 != -1) && (i2 == j1))
                {
                    fl = true;
                }
                if ((i2 != -1) && (i2 == j2))
                {
                    fl = true;
                }
                if ((i2 != -1) && (i2 == j3))
                {
                    fl = true;
                }
                if ((i3 != -1) && (i3 == j1))
                {
                    fl = true;
                }
                if ((i3 != -1) && (i3 == j2))
                {
                    fl = true;
                }
                if ((i3 != -1) && (i3 == j3))
                {
                    fl = true;
                }
                if (fl)
                {
                    Queue.RemoveAt(i);
                }
            }
            // почистим по номерам бонусов и секторов, если необходимо
            if (q1.OT.isPicsSect)
            {
                for (int i = 0; i < q1.OT.level.bonuses; i++)
                {
                    string   s1  = q1.OT.level.bonus[i];
                    string[] ar1 = s1.Split(' ');
                    foreach (string s2 in ar1)
                    {
                        if ((s2 == q1.wrd) || (s2 == q1.wrd2))
                        {
                            int cnt2 = Queue.Count;
                            int jj1, jj2, jj3;
                            for (int ii = cnt2 - 1; ii >= 0; ii--)
                            {
                                jj1 = Queue[ii].i1;
                                jj2 = Queue[ii].i2;
                                jj3 = Queue[ii].i3;
                                if (i == jj1)
                                {
                                    Queue.RemoveAt(ii);
                                }
                            }
                        }
                    }
                }
                for (int i = 0; i < q1.OT.level.sectors; i++)
                {
                    string   s1  = q1.OT.level.sector[i];
                    string[] ar1 = s1.Split(' ');
                    foreach (string s2 in ar1)
                    {
                        if ((s2 == q1.wrd) || (s2 == q1.wrd2))
                        {
                            int cnt2 = Queue.Count;
                            int jj1, jj2, jj3;
                            for (int ii = cnt2 - 1; ii >= 0; ii--)
                            {
                                jj1 = Queue[ii].i1;
                                jj2 = Queue[ii].i2;
                                jj3 = Queue[ii].i3;
                                if (i == jj1)
                                {
                                    Queue.RemoveAt(ii);
                                }
                            }
                        }
                    }
                }
            }
        }