Ejemplo n.º 1
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 動かしたい駒の解除
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public bool DeselectByMouse(int x, int y, MainGui_Csharp shogiGui)
        {
            bool changed = false;

            if (this.HitByMouse(x, y)) // マウスが重なっているなら
            {
                if (shogiGui.Shape_PnlTaikyoku.SelectFirstTouch)
                {
                    // クリックのマウスアップ
                    shogiGui.Shape_PnlTaikyoku.SelectFirstTouch = false;
                }
                else
                {
                    // 選択解除のマウスアップ
                    this.Select = false;
                    changed     = true;
                }
            }
            else
            {
                // 何もしない
            }

            return(changed);
        }
Ejemplo n.º 2
0
        public override void Step3_SetEvent(object obj_shogiGui)
        {
            MainGui_Csharp shogibanGui1 = (MainGui_Csharp)obj_shogiGui;

            //----------
            // 将棋エンジン起動ボタン_学習
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnShogiEngineKidoL");
                widget.Delegate_MouseHitEvent = Event_CsharpVsImpl.GetInstance().Delegate_BtnShogiEngineKidoL;
            }

            //----------
            // 将棋エンジン起動ボタン_CP起動
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnShogiEngineKidoF");
                widget.Delegate_MouseHitEvent = Event_CsharpVsImpl.GetInstance().Delegate_BtnComputerBoot;
            }

            //----------
            // 将棋エンジン起動ボタン_CP先
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnShogiEngineKidoT");
                widget.Delegate_MouseHitEvent = Event_CsharpVsImpl.GetInstance().Delegate_BtnComputerSente;
            }
        }
Ejemplo n.º 3
0
        private void Uc_Form2Main_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            MainGui_Csharp mainGui = ((Form2_Console)this.ParentForm).Form1_Shogi.Uc_Form1Main.MainGui;

            // このメインパネルに、何かして欲しいという要求は、ここに入れられます。
            mainGui.RepaintRequest = new RepaintRequestImpl();

            //------------------------------
            // マウスボタンが放されたときの、表示物の反応や、将棋データの変更がこの中に書かれています。
            //------------------------------
            if (e.Button == MouseButtons.Left)
            {
                //------------------------------------------------------------
                // 左ボタン
                //------------------------------------------------------------
                TimedB_MouseCapture timeB = ((TimedB_MouseCapture)mainGui.TimedB_MouseCapture);
                timeB.MouseEventQueue.Enqueue(
                    new MouseEventState(mainGui.Scene, Shape_CanvasImpl.WINDOW_NAME_CONSOLE, MouseEventStateName.MouseLeftButtonUp, e.Location));
            }
            else if (e.Button == MouseButtons.Right)
            {
                //------------------------------------------------------------
                // 右ボタン
                //------------------------------------------------------------
                TimedB_MouseCapture timeB = ((TimedB_MouseCapture)mainGui.TimedB_MouseCapture);
                timeB.MouseEventQueue.Enqueue(
                    new MouseEventState(mainGui.Scene, Shape_CanvasImpl.WINDOW_NAME_CONSOLE, MouseEventStateName.MouseRightButtonUp, e.Location));
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// [初期配置]ボタン
        /// </summary>
        public static void Perform_SyokiHaichi(
            MainGui_Csharp mainGui
            )
        {
            mainGui.Link_Server.Model_Taikyoku.Kifu.Clear();                                                  // 棋譜を空っぽにします。
            mainGui.Link_Server.Model_Taikyoku.Kifu.SetProperty(Word_KifuTree.PropName_Startpos, "startpos"); //平手の初期局面
            Playerside firstPside = Playerside.P1;

            KifuNode newNode = new KifuNodeImpl(
                Util_Sky258A.RootMove,                                     //ルートなので
                new KyokumenWrapper(Util_SkyWriter.New_Hirate(firstPside)) //[初期配置]ボタン押下時
                );

            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            // ここで棋譜の変更をします。
            // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
            string jsaFugoStr;

            Util_Functions_Server.SetCurNode_Srv(
                mainGui.Link_Server.Model_Taikyoku,
                mainGui.Model_Manual,
                newNode, out jsaFugoStr);
            mainGui.RepaintRequest.SetFlag_RefreshRequest();

            mainGui.RepaintRequest.SetFlag_RecalculateRequested();// 駒の再描画要求
            mainGui.RepaintRequest.SyuturyokuRequest = RepaintRequestGedanTxt.Clear;
            mainGui.RepaintRequest.SetFlag_RefreshRequest();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 局面に合わせて、駒ボタンのx,y位置を変更します
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="btnKoma">駒</param>
        public static void Redraw_KomaLocation(
            Finger figKoma,
            MainGui_Csharp mainGui
            )
        {
            RO_Star koma = Util_Starlightable.AsKoma(mainGui.Model_Manual.GuiSkyConst.StarlightIndexOf(figKoma).Now);

            Shape_BtnKoma btnKoma = Conv_Koma_InGui.FingerToKomaBtn(figKoma, mainGui);

            // マスと駒の隙間(パディング)
            int padX = 2;
            int padY = 2;

            int suji;
            int dan;

            Util_MasuNum.TryMasuToSuji(koma.Masu, out suji);
            Util_MasuNum.TryMasuToDan(koma.Masu, out dan);

            switch (Conv_SyElement.ToOkiba(koma.Masu))
            {
            case Okiba.ShogiBan:
                btnKoma.SetBounds(new Rectangle(
                                      mainGui.Shape_PnlTaikyoku.Shogiban.SujiToX(suji) + padX,
                                      mainGui.Shape_PnlTaikyoku.Shogiban.DanToY(dan) + padY,
                                      btnKoma.Bounds.Width,
                                      btnKoma.Bounds.Height
                                      ));
                break;

            case Okiba.Sente_Komadai:
                btnKoma.SetBounds(new Rectangle(
                                      mainGui.Shape_PnlTaikyoku.KomadaiArr[0].SujiToX(suji) + padX,
                                      mainGui.Shape_PnlTaikyoku.KomadaiArr[0].DanToY(dan) + padY,
                                      btnKoma.Bounds.Width,
                                      btnKoma.Bounds.Height
                                      ));
                break;

            case Okiba.Gote_Komadai:
                btnKoma.SetBounds(new Rectangle(
                                      mainGui.Shape_PnlTaikyoku.KomadaiArr[1].SujiToX(suji) + padX,
                                      mainGui.Shape_PnlTaikyoku.KomadaiArr[1].DanToY(dan) + padY,
                                      btnKoma.Bounds.Width,
                                      btnKoma.Bounds.Height
                                      ));
                break;

            case Okiba.KomaBukuro:
                btnKoma.SetBounds(new Rectangle(
                                      mainGui.Shape_PnlTaikyoku.KomadaiArr[2].SujiToX(suji) + padX,
                                      mainGui.Shape_PnlTaikyoku.KomadaiArr[2].DanToY(dan) + padY,
                                      btnKoma.Bounds.Width,
                                      btnKoma.Bounds.Height
                                      ));
                break;
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// ウィジェットのコンパイル。
        /// </summary>
        /// <param name="obj_shogiGui"></param>
        public virtual void Step2_Compile_AllWidget(object obj_shogiGui)
        {
            MainGui_Csharp shogibanGui = (MainGui_Csharp)obj_shogiGui;

            foreach (UserWidget widget in shogibanGui.Widgets.Values)
            {
                widget.Compile();
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// シングルトン。
        /// </summary>
        /// <returns></returns>
        public static Event_CsharpVsImpl GetInstance()
        {
            if (null == Event_CsharpVsImpl.instance)
            {
                Event_CsharpVsImpl ins = new Event_CsharpVsImpl();
                Event_CsharpVsImpl.instance = ins;

                //
                // [将棋エンジン起動ボタン_学習]ボタンのイベント。
                //
                ins.delegate_BtnShogiEngineKidoL = (
                    object obj_shogiGui2
                    , object userWidget2 // UerWidget
                    , object btnKoma_Selected2
                    ) =>
                {
                    Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2;
                    // ここに処理を書く
                };

                //
                // [将棋エンジン起動ボタン_直観]ボタンのイベント。
                //
                ins.delegate_BtnShogiEngineKidoF = (
                    object obj_shogiGui2
                    , object userWidget2 // UerWidget
                    , object btnKoma_Selected2
                    ) =>
                {
                    Shape_BtnKoma    btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2;
                    MainGui_Csharp   shogiGui         = (MainGui_Csharp)obj_shogiGui2;
                    Uc_Form1Mainable ui_PnlMain       = ((Form1_Shogi)shogiGui.OwnerForm).Uc_Form1Main;

                    ui_PnlMain.MainGui.Start_ShogiEngine(ui_PnlMain.SetteiXmlFile.ShogiEngineFilePath);
                };

                //
                // [将棋エンジン起動ボタン_思考]ボタンのイベント。
                //
                ins.delegate_BtnShogiEngineKidoT = (
                    object obj_shogiGui2
                    , object userWidget2 // UerWidget
                    , object btnKoma_Selected2
                    ) =>
                {
                    Shape_BtnKoma btnKoma_Selected = (Shape_BtnKoma)btnKoma_Selected2;
                    // ここに処理を書く

                    MainGui_Csharp   shogiGui   = (MainGui_Csharp)obj_shogiGui2;
                    Uc_Form1Mainable ui_PnlMain = ((Form1_Shogi)shogiGui.OwnerForm).Uc_Form1Main;

                    ui_PnlMain.MainGui.Do_ComputerSente();
                };
            }
            return(Event_CsharpVsImpl.instance);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// ************************************************************************************************************************
        /// コンストラクターです。
        /// ************************************************************************************************************************
        /// </summary>
        public Form1_Shogi(MainGui_Csharp owner)
        {
            this.owner = owner;
            InitializeComponent();
            this.uc_Form1Main.SetMainGui(this.owner);

            //----------------------------------------
            // 別窓を開きます。
            //----------------------------------------
            this.form2_Console = new Form2_Console(this);
            this.form2_Console.Show(this);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// つまんでいる駒。
        /// </summary>
        /// <returns>つまんでいる駒。なければヌル</returns>
        public Shape_BtnKoma Btn_TumandeiruKoma(object obj_shogiGui)
        {
            MainGui_Csharp shogiGui = (MainGui_Csharp)obj_shogiGui;
            Shape_BtnKoma  found    = null;

            if (-1 != shogiGui.FigTumandeiruKoma)
            {
                found = this.Btn40Komas[shogiGui.FigTumandeiruKoma];
            }

            return(found);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// コンストラクター。
        /// </summary>
        public SubGuiImpl(MainGui_CsharpImpl owner)
        {
            this.owner = owner;

            //----------
            // ビュー
            //----------
            //
            //      ボタンや将棋盤などを描画するツールを、事前準備しておきます。
            //
            this.shape_Canvas = new Shape_CanvasImpl(owner.EngineConf, "#Canvas", 0, 0, 0, 0);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 対局の描画の一式は、ここに書きます。
        /// ************************************************************************************************************************
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public override void Paint(
            object sender, PaintEventArgs e,
            MainGui_Csharp shogiGui,
            string windowName
            )
        {
            if (!this.Visible)
            {
                goto gt_EndMethod;
            }

            //----------
            // 将棋盤
            //----------
            this.Shogiban.Paint(e.Graphics);

            //----------
            // 駒置き、駒袋
            //----------
            for (int i = 0; i < this.KomadaiArr.Length; i++)
            {
                Shape_PnlKomadai k = this.KomadaiArr[i];
                k.Paint(e.Graphics);
            }

            //----------
            // 駒
            //----------
            foreach (Shape_BtnKomaImpl koma in this.Btn40Komas)
            {
                koma.Paint(e.Graphics, shogiGui);
            }

            //----------
            // 符号表示
            //----------
            this.lblFugo.Paint(e.Graphics);

            //----------
            // 先後表示
            //----------
            Playerside pside = shogiGui.Link_Server.Model_Taikyoku.Kifu.CurNode.Value.KyokumenConst.KaisiPside;

            this.lblPside.Text = Conv_Playerside.ToKanji(pside);
            this.lblPside.Paint(e.Graphics);


            base.Paint(sender, e, shogiGui, windowName);

gt_EndMethod:
            ;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 駒のハンドル(*1)を元に、ボタンを返します。
        /// ************************************************************************************************************************
        ///
        ///     *1…将棋の駒1つ1つに付けられた番号です。
        ///
        /// </summary>
        /// <param name="hKoma"></param>
        /// <param name="shape_PnlTaikyoku"></param>
        /// <returns>なければヌル</returns>
        public static Shape_BtnKoma FingerToKomaBtn(Finger koma, MainGui_Csharp shogiGui)
        {
            Shape_BtnKoma found = null;

            int hKoma = (int)koma;

            if (0 <= hKoma && hKoma < shogiGui.Shape_PnlTaikyoku.Btn40Komas.Length)
            {
                found = shogiGui.Shape_PnlTaikyoku.Btn40Komas[hKoma];
            }

            return(found);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// FIXME: 使ってない?
        ///
        /// ************************************************************************************************************************
        /// 駒のハンドル(*1)を元に、ボタンを返します。
        /// ************************************************************************************************************************
        ///
        ///     *1…将棋の駒1つ1つに付けられた番号です。
        ///
        /// </summary>
        /// <param name="hKomas"></param>
        /// <param name="shape_PnlTaikyoku"></param>
        /// <returns></returns>
        public static List <Shape_BtnKoma> HKomasToBtns(List <int> hKomas, MainGui_Csharp shogiGui)
        {
            List <Shape_BtnKoma> btns = new List <Shape_BtnKoma>();

            foreach (int handle in hKomas)
            {
                Shape_BtnKoma btn = shogiGui.Shape_PnlTaikyoku.Btn40Komas[handle];
                if (null != btn)
                {
                    btns.Add(btn);
                }
            }

            return(btns);
        }
Ejemplo n.º 14
0
        private void Uc_Form2Main_MouseDown(object sender, MouseEventArgs e)
        {
            MainGui_Csharp shogibanGui = ((Form2_Console)this.ParentForm).Form1_Shogi.Uc_Form1Main.MainGui;

            if (null == shogibanGui.Shape_PnlTaikyoku)
            {
                goto gt_EndMethod;
            }

            // このメインパネルに、何かして欲しいという要求は、ここに入れられます。
            shogibanGui.RepaintRequest = new RepaintRequestImpl();


            if (e.Button == MouseButtons.Left)
            {
                //------------------------------------------------------------
                // 左ボタン
                //------------------------------------------------------------
                TimedB_MouseCapture timeB = ((TimedB_MouseCapture)shogibanGui.TimedB_MouseCapture);
                timeB.MouseEventQueue.Enqueue(
                    new MouseEventState(shogibanGui.Scene, Shape_CanvasImpl.WINDOW_NAME_CONSOLE, MouseEventStateName.MouseLeftButtonDown, e.Location));
            }
            else if (e.Button == MouseButtons.Right)
            {
                //------------------------------------------------------------
                // 右ボタン
                //------------------------------------------------------------
                TimedB_MouseCapture timeB = ((TimedB_MouseCapture)shogibanGui.TimedB_MouseCapture);
                timeB.MouseEventQueue.Enqueue(
                    new MouseEventState(shogibanGui.Scene, Shape_CanvasImpl.WINDOW_NAME_CONSOLE, MouseEventStateName.MouseRightButtonDown, e.Location));


                //------------------------------
                // このメインパネルの反応
                //------------------------------
                shogibanGui.Response("MouseOperation");
            }
            else
            {
                //------------------------------
                // このメインパネルの反応
                //------------------------------
                shogibanGui.Response("MouseOperation");
            }

gt_EndMethod:
            ;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 取った駒がある場合のみ。
        /// </summary>
        /// <param name="koma_Food_after"></param>
        /// <param name="shogiGui"></param>
        public static void Komamove1a_51Gui(
            bool torareruKomaAri,
            RO_Star koma_Food_after,
            MainGui_Csharp shogiGui
            )
        {
            if (torareruKomaAri)
            {
                //------------------------------
                // 「取った駒種類_巻戻し用」を棋譜に覚えさせます。(差替え)
                //------------------------------
                shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma = koma_Food_after;//2014-10-19 21:04 追加
            }

            shogiGui.RepaintRequest.SetFlag_RecalculateRequested();
        }
Ejemplo n.º 16
0
        private void Uc_Form2Main_Paint(object sender, PaintEventArgs e)
        {
            MainGui_Csharp shogibanGui = ((Form2_Console)this.ParentForm).Form1_Shogi.Uc_Form1Main.MainGui;

            if (null == shogibanGui.ConsoleWindowGui.Shape_Canvas)
            {
                goto gt_EndMethod;
            }

            //------------------------------
            // 画面の描画です。
            //------------------------------
            shogibanGui.ConsoleWindowGui.Shape_Canvas.Paint(sender, e, shogibanGui, Shape_CanvasImpl.WINDOW_NAME_CONSOLE);

gt_EndMethod:
            ;
        }
Ejemplo n.º 17
0
 /// <summary>
 /// ************************************************************************************************************************
 /// 対局の描画の一式は、ここに書きます。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public virtual void Paint(
     object sender,
     PaintEventArgs e,
     MainGui_Csharp shogibanGui,
     string windowName
     )
 {
     //----------------------------------------
     // 登録ウィジェットの描画
     //----------------------------------------
     foreach (UserWidget widget in shogibanGui.Widgets.Values)
     {
         if (widget.Window == windowName)
         {
             widget.Paint(e.Graphics);
         }
     }
 }
Ejemplo n.º 18
0
        /// <summary>
        /// v(^▽^)v超能力『メナス』だぜ☆ 未来の脅威を予測し、可視化するぜ☆www
        /// </summary>
        public static void Menace(MainGui_Csharp mainGui)
        {
            if (0 < mainGui.Model_Manual.GuiTemezumi)
            {
                // 処理の順序が悪く、初回はうまく判定できない。
                SkyConst src_Sky = mainGui.Model_Manual.GuiSkyConst;


                //----------
                // 将棋盤上の駒
                //----------
                mainGui.RepaintRequest.SetFlag_RefreshRequest();

                // [クリアー]
                mainGui.Shape_PnlTaikyoku.Shogiban.ClearHMasu_KikiKomaList();

                // 全駒
                foreach (Finger figKoma in Finger_Honshogi.Items_KomaOnly)
                {
                    RO_Star koma = Util_Starlightable.AsKoma(src_Sky.StarlightIndexOf(figKoma).Now);


                    if (
                        Okiba.ShogiBan == Conv_SyElement.ToOkiba(koma.Masu)
                        &&
                        mainGui.Model_Manual.GuiPside != koma.Pside
                        )
                    {
                        // 駒の利き
                        SySet <SyElement> kikiZukei = Util_Sky_SyugoQuery.KomaKidou_Potential(figKoma, src_Sky);

                        IEnumerable <SyElement> kikiMasuList = kikiZukei.Elements;
                        foreach (SyElement masu in kikiMasuList)
                        {
                            // その枡に利いている駒のハンドルを追加
                            if (!Masu_Honshogi.IsErrorBasho(masu))
                            {
                                mainGui.Shape_PnlTaikyoku.Shogiban.HMasu_KikiKomaList[Conv_SyElement.ToMasuNumber(masu)].Add((int)figKoma);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// ************************************************************************************************************************
        /// [巻戻し]ボタン
        /// ************************************************************************************************************************
        /// </summary>
        public static bool Makimodosi_Gui(
            MainGui_Csharp shogiGui,
            Finger movedKoma,
            Finger foodKoma,
            string fugoJStr,
            string backedInputText)
        {
            //------------------------------
            // チェンジターン
            //------------------------------
            shogiGui.ChangedTurn();//[巻戻し]ボタンを押したあと


            //------------------------------
            // 符号表示
            //------------------------------
            shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJStr);


            Shape_BtnKoma btn_movedKoma = Conv_Koma_InGui.FingerToKomaBtn(movedKoma, shogiGui);
            Shape_BtnKoma btn_foodKoma  = Conv_Koma_InGui.FingerToKomaBtn(foodKoma, shogiGui);//取られた駒

            //------------------------------------------------------------
            // 駒・再描画
            //------------------------------------------------------------
            if (
                null != btn_movedKoma //動かした駒
                ||
                null != btn_foodKoma  //取ったときに下にあった駒(巻戻しのときは、これは無し)
                )
            {
                shogiGui.RepaintRequest.SetFlag_RecalculateRequested();// 駒の再描画要求
            }

            // 巻き戻したので、符号が入ります。
            {
                shogiGui.RepaintRequest.NyuryokuText      = $"{fugoJStr} {backedInputText}";// 入力欄
                shogiGui.RepaintRequest.SyuturyokuRequest = RepaintRequestGedanTxt.Kifu;
            }
            shogiGui.RepaintRequest.SetFlag_RefreshRequest();

            return(true);
        }
Ejemplo n.º 20
0
        public static void Komamove1a_49Gui(
            out PieceType toSyurui,
            out IMoveHalf dst,
            Shape_BtnKoma btnKoma_Selected,
            Shape_BtnMasu btnMasu,
            MainGui_Csharp mainGui
            )
        {
            // 駒の種類
            if (mainGui.Naru)
            {
                // 成ります

                toSyurui = Util_Komasyurui14.NariCaseHandle[(int)Util_Komahaiyaku184.Syurui(Util_Starlightable.AsKoma(mainGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku)];
                mainGui.SetNaruFlag(false);
            }
            else
            {
                // そのまま
                toSyurui = Util_Komahaiyaku184.Syurui(Util_Starlightable.AsKoma(mainGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku);
            }


            // 置く駒
            {
                dst = new RO_Starlight(
                    //btnKoma_Selected.Finger,
                    new RO_Star(
                        Util_Starlightable.AsKoma(mainGui.Model_Manual.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Finger).Now).Pside,
                        btnMasu.Zahyo,
                        toSyurui
                        )
                    );
            }


            //------------------------------------------------------------
            // 「取った駒種類_巻戻し用」をクリアーします。
            //------------------------------------------------------------
            mainGui.Shape_PnlTaikyoku.MousePos_FoodKoma = null;
        }
Ejemplo n.º 21
0
        public static bool Komaokuri_Gui(string restText, MainGui_Csharp shogiGui)
        {
            //------------------------------
            // 符号表示
            //------------------------------
            {
                Node <IMove, KyokumenWrapper> node6 = shogiGui.Link_Server.Model_Taikyoku.Kifu.CurNode;

                // [コマ送り][再生]ボタン
                string jsaFugoStr = ConvMoveStrJsa.ToMoveStrJsa(node6);

                shogiGui.Shape_PnlTaikyoku.SetFugo(jsaFugoStr);
            }



            shogiGui.RepaintRequest.SetFlag_RecalculateRequested(); // 再描画1

            shogiGui.RepaintRequest.NyuryokuText = restText;        //追加
            shogiGui.RepaintRequest.SetFlag_RefreshRequest();       // GUIに通知するだけ。


            return(true);
        }
Ejemplo n.º 22
0
 public TimedA_EngineCapture(MainGui_Csharp shogibanGui)
 {
     this.mainGui = shogibanGui;
 }
Ejemplo n.º 23
0
 public WidgetsLoader_CsharpImpl(string fileName, MainGui_Csharp shogibanGui)
 {
     this.FileName    = fileName;
     this.ShogibanGui = shogibanGui;
 }
Ejemplo n.º 24
0
        /// <summary>
        /// イベントの設定。
        /// </summary>
        /// <param name="obj_shogiGui"></param>
        public virtual void Step3_SetEvent(object obj_shogiGui)
        {
            MainGui_Csharp shogibanGui1 = (MainGui_Csharp)obj_shogiGui;

            //----------
            // [成る]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnNaru");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnNaru;
            }

            //----------
            // [成らない]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnNaranai");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnNaranai;
            }

            //----------
            // [クリアー]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnClear");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnClear;
            }

            //----------
            // [再生]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnPlay");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnPlay;
            }

            //----------
            // [コマ送り]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnForward");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnForward;
            }

            //----------
            // [巻戻し]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnBackward");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnBackward;
            }

            //----------
            // ログ出せボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnLogdase");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnLogdase;
            }

            //----------
            // [壁置く]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnKabeOku");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnKabeOku;
            }

            //----------
            // [出力切替]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnSyuturyokuKirikae");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnSyuturyokuKirikae;
            }

            //----------
            // [▲]~[打]符号ボタン
            //----------
            {
                string[] buttonNames = new string[] {
                    "BtnFugo_Sente"    // [▲]~[打]符号ボタン
                    , "BtnFugo_Gote"
                    , "BtnFugo_1"
                    , "BtnFugo_2"
                    , "BtnFugo_3"
                    , "BtnFugo_4"
                    , "BtnFugo_5"
                    , "BtnFugo_6"
                    , "BtnFugo_7"
                    , "BtnFugo_8"
                    , "BtnFugo_9"
                    , "BtnFugo_Dou"
                    , "BtnFugo_Fu"
                    , "BtnFugo_Hisya"
                    , "BtnFugo_Kaku"
                    , "BtnFugo_Kyo"
                    , "BtnFugo_Kei"
                    , "BtnFugo_Gin"
                    , "BtnFugo_Kin"
                    , "BtnFugo_Oh"
                    , "BtnFugo_Gyoku"
                    , "BtnFugo_Tokin"
                    , "BtnFugo_Narikyo"
                    , "BtnFugo_Narikei"
                    , "BtnFugo_Narigin"
                    , "BtnFugo_Ryu"
                    , "BtnFugo_Uma"
                    , "BtnFugo_Yoru"
                    , "BtnFugo_Hiku"
                    , "BtnFugo_Agaru"
                    , "BtnFugo_Migi"
                    , "BtnFugo_Hidari"
                    , "BtnFugo_Sugu"
                    , "BtnFugo_Nari"
                    , "BtnFugo_Funari"
                    , "BtnFugo_Da"
                };

                foreach (string buttonName in buttonNames)
                {
                    UserWidget widget = shogibanGui1.GetWidget(buttonName);
                    widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnKakusyuFugo;
                }
            }

            //----------
            // [全消]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnFugo_Zenkesi");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnZenkesi;
            }

            //----------
            // [ここから採譜]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnFugo_KokokaraSaifu");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnKokokaraSaifu;
            }

            //----------
            // 初期配置ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnSyokihaichi");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnSyokihaichi;
            }

            //----------
            // [向き]ボタン
            //----------
            {
                UserWidget widget = shogibanGui1.GetWidget("BtnMuki");
                widget.Delegate_MouseHitEvent = Event_CsharpImpl.GetInstance().Delegate_BtnMuki;
            }
        }
Ejemplo n.º 25
0
 public WidgetsLoader_CsharpVsImpl(string fileName, MainGui_Csharp shogibanGui)
     : base(fileName, shogibanGui)
 {
 }
Ejemplo n.º 26
0
        /// <summary>
        /// ************************************************************************************************************************
        /// HTML出力。(これは作者のホームページ用に書かれています)
        /// ************************************************************************************************************************
        /// </summary>
        public static string CreateHtml(MainGui_Csharp mainGui)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("<div style=\"position:relative; left:0px; top:0px; border:solid 1px black; width:250px; height:180px;\">");

            // 後手の持ち駒
            sb.AppendLine("    <div style=\"position:absolute; left:0px; top:2px; width:30px;\">");
            sb.AppendLine("        △後手");
            sb.AppendLine("        <div style=\"margin-top:10px; width:30px;\">");
            sb.Append("            ");

            SkyConst siteiSky = mainGui.Model_Manual.GuiSkyConst;

            siteiSky.Foreach_Starlights((Finger finger, IMoveHalf ml, ref bool toBreak) =>
            {
                RO_Star koma = Util_Starlightable.AsKoma(ml.Now);


                if (Conv_SyElement.ToOkiba(koma.Masu) == Okiba.Gote_Komadai)
                {
                    sb.Append(Util_Komasyurui14.Fugo[(int)Util_Komahaiyaku184.Syurui(koma.Haiyaku)]);
                }
            });

            sb.AppendLine("        </div>");
            sb.AppendLine("    </div>");

            // 将棋盤
            sb.AppendLine("    <div style=\"position:absolute; left:30px; top:2px; width:182px;\">");
            sb.AppendLine("        <table>");
            for (int dan = 1; dan <= 9; dan++)
            {
                sb.Append("        <tr>");
                for (int suji = 9; 1 <= suji; suji--)
                {
                    bool isSpace = true;

                    siteiSky.Foreach_Starlights((Finger finger, IMoveHalf ml, ref bool toBreak) =>
                    {
                        RO_Star koma2 = Util_Starlightable.AsKoma(ml.Now);


                        int suji2;
                        Util_MasuNum.TryMasuToSuji(koma2.Masu, out suji2);

                        int dan2;
                        Util_MasuNum.TryMasuToDan(koma2.Masu, out dan2);

                        if (
                            Conv_SyElement.ToOkiba(koma2.Masu) == Okiba.ShogiBan && //盤上
                            suji2 == suji &&
                            dan2 == dan
                            )
                        {
                            if (Playerside.P2 == koma2.Pside)
                            {
                                sb.Append("<td><span class=\"koma2x\">");
                                sb.Append(Util_Komasyurui14.Fugo[(int)Util_Komahaiyaku184.Syurui(koma2.Haiyaku)]);
                                sb.Append("</span></td>");
                                isSpace = false;
                            }
                            else
                            {
                                sb.Append("<td><span class=\"koma1x\">");
                                sb.Append(Util_Komasyurui14.Fugo[(int)Util_Komahaiyaku184.Syurui(koma2.Haiyaku)]);
                                sb.Append("</span></td>");
                                isSpace = false;
                            }
                        }
                    });

                    if (isSpace)
                    {
                        sb.Append("<td> </td>");
                    }
                }

                sb.AppendLine("</tr>");
            }
            sb.AppendLine("        </table>");
            sb.AppendLine("    </div>");

            // 先手の持ち駒
            sb.AppendLine("    <div style=\"position:absolute; left:215px; top:2px; width:30px;\">");
            sb.AppendLine("        ▲先手");
            sb.AppendLine("        <div style=\"margin-top:10px; width:30px;\">");
            sb.Append("            ");

            siteiSky.Foreach_Starlights((Finger finger, IMoveHalf ml, ref bool toBreak) =>
            {
                RO_Star koma = Util_Starlightable.AsKoma(ml.Now);

                if (Conv_SyElement.ToOkiba(koma.Masu) == Okiba.Sente_Komadai)
                {
                    sb.Append(Util_Komasyurui14.Fugo[(int)Util_Komahaiyaku184.Syurui(koma.Haiyaku)]);
                }
            });

            sb.AppendLine("        </div>");
            sb.AppendLine("    </div>");

            //
            sb.AppendLine("</div>");

            return(sb.ToString());
        }
Ejemplo n.º 27
0
        /// <summary>
        /// ************************************************************************************************************************
        /// 入力欄の表示・出力欄の表示・再描画
        /// ************************************************************************************************************************
        ///
        /// このメインパネルに何かして欲しいことがあれば、
        /// RequestForMain に要望を入れて、この関数を呼び出してください。
        ///
        /// 同時には処理できない項目もあります。
        /// </summary>
        /// <param name="response"></param>
        public void Solute_RepaintRequest(
            Form1_Mutex mutex, MainGui_Csharp mainGui)
        {
            Uc_Form2Main form2 = ((Form1_Shogi)this.ParentForm).Form2_Console.Uc_Form2Main;

            //------------------------------------------------------------
            // 駒の座標再計算
            //------------------------------------------------------------
            if (mainGui.RepaintRequest.Is_StarlightsRecalculateRequested())
            {
                this.MainGui.Model_Manual.GuiSkyConst.Foreach_Starlights((Finger finger, IMoveHalf light, ref bool toBreak) =>
                {
                    Util_Function_Csharp.Redraw_KomaLocation(finger, this.MainGui);
                });
            }
            mainGui.RepaintRequest.Clear_StarlightsRecalculateRequested();


            //------------------------------
            // 入力欄の表示
            //------------------------------
            if (mainGui.RepaintRequest.IsRequested_RepaintNyuryokuText)
            {
                // 指定のテキストで上書きします。
                form2.SetInputareaText(mainGui.RepaintRequest.NyuryokuText);
            }
            else if (mainGui.RepaintRequest.IsRequested_NyuryokuTextTail)
            {
                // 指定のテキストを後ろに足します。
                form2.AppendInputareaText(mainGui.RepaintRequest.NyuryokuTextTail);
                mainGui.RepaintRequest.SetNyuryokuTextTail("");//要求の解除
            }

            //------------------------------
            // 出力欄(上・下段)の表示
            //------------------------------
            switch (mainGui.RepaintRequest.SyuturyokuRequest)
            {
            case RepaintRequestGedanTxt.Clear:
            {
                // 出力欄(上下段)を空っぽにします。
                form2.WriteLine_Syuturyoku("");

                // ログ
                //Logger.Trace( "");
                //Logger.Trace( "");
            }
            break;

            case RepaintRequestGedanTxt.Kifu:
            {
                // 出力欄(上下段)に、棋譜を出力します。
                switch (this.MainGui.SyuturyokuKirikae)
                {
                case SyuturyokuKirikae.Japanese:
                    form2.WriteLine_Syuturyoku(Util_KirokuGakari.ToJsaFugoListString(this.MainGui.Link_Server.Model_Taikyoku.Kifu, "Ui_PnlMain.Response"));
                    break;

                case SyuturyokuKirikae.Sfen:
                    form2.WriteLine_Syuturyoku(Util_KirokuGakari.ToSfen_PositionCommand(this.MainGui.Link_Server.Model_Taikyoku.Kifu));
                    break;

                case SyuturyokuKirikae.Html:
                    form2.WriteLine_Syuturyoku(Uc_Form1Main.CreateHtml(this.MainGui));
                    break;
                }

#if DEBUG
                // ログ
                Logger.Trace(form2.GetOutputareaText());
#endif
            }
            break;

            default:
                // スルー
                break;
            }

            //------------------------------
            // 再描画
            //------------------------------
            if (mainGui.RepaintRequest.IsRefreshRequested())
            {
                this.Refresh();

                mainGui.RepaintRequest.ClearRefreshRequest();
            }
        }
Ejemplo n.º 28
0
 public void SetMainGui(MainGui_Csharp mainGui)
 {
     this.mainGui = mainGui;
 }
Ejemplo n.º 29
0
 public TimedC_SaiseiCapture(MainGui_Csharp shogiGui)
 {
     this.mainGui          = shogiGui;
     this.SaiseiEventQueue = new Queue <SaiseiEventState>();
 }
Ejemplo n.º 30
0
 /// <summary>
 /// ************************************************************************************************************************
 /// コンストラクターです。
 /// ************************************************************************************************************************
 /// </summary>
 /// <param name="okiba"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 public Shape_PnlKomadaiImpl(IEngineConf engineConf, string widgetName, Okiba okiba, int x, int y, int firstMasuHandle, MainGui_Csharp shogibanGui)
     : base(engineConf, widgetName, x, y, 1, 1)
 {
     this.ShogibanGui     = shogibanGui;
     this.Okiba           = okiba;
     this.MasuWidth       = 40;
     this.MasuHeight      = 40;
     this.FirstMasuHandle = firstMasuHandle;
 }