Beispiel #1
0
        public bool ParseDoMove(out Move out_move)
        {
            // コンソールからのキー入力を解析するぜ☆(^▽^)
            int caret    = this.caret;
            int oldCaret = this.caret;

            Util_String.TobasuTangoToMatubiKuhaku(this.commandline, ref caret, "do ");

            // うしろに続く文字は☆(^▽^)
            if (!LisPlay.MatchFenMove(PureSettei.fenSyurui, this.commandline, ref caret, out out_move))
            {
                this.caret = oldCaret;

                //String2 str = new String2Impl();
                //str.Append("指し手のパースに失敗だぜ☆(^~^)! #鷺 commandline=[");
                //str.Append(commandline);
                //str.Append("] caret=[");
                //str.Append(caret);
                //str.Append("]");
                //syuturyoku.AppendLine(str.ToContents());
                //Util_Machine.Flush();
                //throw new Exception(str.ToContents());
                return(false);
            }

            // do コマンドだった場合☆
            this.caret = caret;
            this.CommentCommandline();// コマンドの誤発動防止
            return(true);
        }
Beispiel #2
0
        public static bool TryMoveCmd2(out Move out_move, string line)
        {
            // うしろに続く文字は☆(^▽^)
            int caret = 0;

            Util_String.TobasuTangoToMatubiKuhaku(line, ref caret, "move ");
            string line2 = line.Substring(caret).Trim();

            // move 912 といった数字かどうか☆(^~^)
            int ssSuji;

            if (int.TryParse(line2, out ssSuji))
            {
                out_move = (Move)ssSuji;
                return(true);
            }

            // 数字でなければ、 move B2B3 といった文字列か☆(^~^)
            if (!LisPlay.MatchFenMove(PureSettei.fenSyurui, line, ref caret, out out_move))
            {
                out_move = Move.Toryo;
                return(false);
            }

            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// 1手作るぜ☆(^~^)
        /// </summary>
        public static void CreateMove(string dfen, out Move out_move)
        {
            int caret = 0;

            if (!LisPlay.MatchFenMove(PureSettei.fenSyurui, dfen, ref caret, out out_move))
            {
                out_move = Move.Toryo;//エラー
            }
        }
Beispiel #4
0
        /// <summary>
        /// moves 以降の符号を指定しろだぜ☆(^~^)
        /// 「手目」は最後まで進んでしまうぜ☆(^~^)
        /// </summary>
        /// <param name="moves"></param>
        public static void Tukurinaosi_RemakeKifuByMoves(string moves)
        {
            PureMemory.mvs_endTeme = 0;

            string[] fugoItiran = moves.Split(' ');
            foreach (string fugo in fugoItiran)
            {
                int  caret = 0;
                Move move;
                if (!LisPlay.MatchFenMove(PureSettei.fenSyurui, fugo, ref caret, out move))
                {
                    throw new System.Exception($"指し手のパースエラー fugo=[{ fugo }]");
                }
                //MoveSeiseiAccessor.AddKifu(
                //    move,
                //    MoveType.N00_Karappo,
                //    Komasyurui.Yososu // FIXME: 取られた駒も調べたい
                //    );
                PureMemory.mvs_ssAr[PureMemory.mvs_endTeme] = move;
                PureMemory.mvs_endTeme++;
            }
        }