/// <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); }
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; } }
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)); } }
/// <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(); }
/// <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; } }
/// <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(); } }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// コンストラクター。 /// </summary> public SubGuiImpl(MainGui_CsharpImpl owner) { this.owner = owner; //---------- // ビュー //---------- // // ボタンや将棋盤などを描画するツールを、事前準備しておきます。 // this.shape_Canvas = new Shape_CanvasImpl(owner.EngineConf, "#Canvas", 0, 0, 0, 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: ; }
/// <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); }
/// <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); }
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: ; }
/// <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(); }
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: ; }
/// <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); } } }
/// <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); } } } } } }
/// <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); }
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; }
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); }
public TimedA_EngineCapture(MainGui_Csharp shogibanGui) { this.mainGui = shogibanGui; }
public WidgetsLoader_CsharpImpl(string fileName, MainGui_Csharp shogibanGui) { this.FileName = fileName; this.ShogibanGui = shogibanGui; }
/// <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; } }
public WidgetsLoader_CsharpVsImpl(string fileName, MainGui_Csharp shogibanGui) : base(fileName, shogibanGui) { }
/// <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()); }
/// <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(); } }
public void SetMainGui(MainGui_Csharp mainGui) { this.mainGui = mainGui; }
public TimedC_SaiseiCapture(MainGui_Csharp shogiGui) { this.mainGui = shogiGui; this.SaiseiEventQueue = new Queue <SaiseiEventState>(); }
/// <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; }