예제 #1
0
        /// <summary>
        /// 次の操作を取得する
        /// </summary>
        /// <returns>BoxOperation</returns>
        public BoxOperation GetNextOperation()
        {
            BoxOperation bo = new BoxOperation();

            if (isOpenSuccess)
            {
                bo.Operation = BoxOperationKind.OPENSUCCESS;
                bo.InputNo   = 0;
            }
            else if (isOpenFailed)
            {
                bo.Operation = BoxOperationKind.OPENFAILED;
                bo.InputNo   = 0;
            }
            else
            {
                if (isBoxOpenable() || TryRemainCnt == 1)
                {
                    bo.Operation = BoxOperationKind.INPUTNO;
                    bo.InputNo   = int.Parse(getNextInputNoIndex());
                }
                else
                {
                    bo.Operation = BoxOperationKind.GETHINTS;
                    bo.InputNo   = 0;
                }
            }
            MiscTools.DebugMessage("残り回数: " + TryRemainCnt.ToString() + " 指示:" + bo.Operation.ToString() + "/" + bo.InputNo.ToString());
            return(bo);
        }
예제 #2
0
        /// <summary>
        /// 受け取ったチャット内容より
        /// </summary>
        /// <param name="iChat"></param>
        public void SetHints(ArrayList iChatArr)
        {
            ArrayList tmpArr = new ArrayList();
            ArrayList reg    = new ArrayList();

            for (int i = 0; i < iChatArr.Count; i++)
            {
                if (!MiscTools.IsRegexString(iChatArr[i].ToString(), BoxHintsStringArr))
                {
                    continue;
                }
                MiscTools.DebugMessage("指示文字列:" + iChatArr[i].ToString());
                for (int j = 0; j < EnableNo.Count; j++)
                {
                    //カギの数字は([0-9]*)より(大きい|小さい)ようだ……。
                    reg = MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString1);
                    if (reg.Count > 0)
                    {
                        Hints.Add(iChatArr[i]);
                        if (reg[1].ToString().Equals("大きい"))
                        {
                            if (int.Parse(EnableNo[j].ToString()) > int.Parse(reg[0].ToString()))
                            {
                                tmpArr.Add(EnableNo[j]);
                            }
                        }
                        else if (reg[1].ToString().Equals("小さい"))
                        {
                            if (int.Parse(EnableNo[j].ToString()) < int.Parse(reg[0].ToString()))
                            {
                                tmpArr.Add(EnableNo[j]);
                            }
                        }
                    }
                    //カギの数字は([0-9]*)より大きく、([0-9]*)より小さいようだ……。
                    reg = MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString2);
                    if (reg.Count > 0)
                    {
                        if (int.Parse(EnableNo[j].ToString()) > int.Parse(reg[0].ToString()) &&
                            int.Parse(EnableNo[j].ToString()) < int.Parse(reg[1].ToString()))
                        {
                            tmpArr.Add(EnableNo[j]);
                        }
                    }
                    //カギの数字の([0-9])桁目は([0-9])か([0-9])か([0-9])のどれかのようだ……。
                    reg = MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString3);
                    if (reg.Count > 0)
                    {
                        int col = 0;
                        if (reg[0].Equals("1"))
                        {
                            col = 1;
                        }
                        else if (reg[0].Equals("2"))
                        {
                            col = 0;
                        }
                        if (EnableNo[j].ToString().Substring(col, 1) == reg[1].ToString() ||
                            EnableNo[j].ToString().Substring(col, 1) == reg[2].ToString() ||
                            EnableNo[j].ToString().Substring(col, 1) == reg[3].ToString())
                        {
                            tmpArr.Add(EnableNo[j]);
                        }
                    }
                    //カギの2桁の数字のどちらかは([0-9])のようだ……。
                    reg = MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString4);
                    if (reg.Count > 0)
                    {
                        if (EnableNo[j].ToString().Substring(0, 1) == reg[0].ToString() ||
                            EnableNo[j].ToString().Substring(1, 1) == reg[0].ToString())
                        {
                            tmpArr.Add(EnableNo[j]);
                        }
                    }
                    //カギの数字の([0-9])桁目は(偶数|奇数)のようだ……。
                    reg = MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString5);
                    if (reg.Count > 0)
                    {
                        int col = 0;
                        if (reg[0].Equals("1"))
                        {
                            col = 1;
                        }
                        else if (reg[0].Equals("2"))
                        {
                            col = 0;
                        }
                        if (reg[1].Equals("偶数") && (int.Parse(EnableNo[j].ToString().Substring(col, 1)) % 2 == 0))
                        {
                            tmpArr.Add(EnableNo[j]);
                        }
                        if (reg[1].Equals("奇数") && (int.Parse(EnableNo[j].ToString().Substring(col, 1)) % 2 == 1))
                        {
                            tmpArr.Add(EnableNo[j]);
                        }
                    }
                    //(.*)は、開錠に成功した!
                    if (MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString6).Count > 0)
                    {
                        isOpenSuccess = true;
                    }
                    //(.*)は、開錠に失敗した……。
                    if (MiscTools.GetRegexString(iChatArr[i].ToString(), BoxHintsString7).Count > 0)
                    {
                        isOpenFailed = true;
                    }
                }
                EnableNo     = tmpArr;
                EnableNoLine = getEnableNoLine();
                MiscTools.DebugMessage("指示文字列結果:" + EnableNoLine);
            }
        }