public static bool Komaokuri_Gui(string restText, NarabeRoomViewModel shogiGui) { //------------------------------ // チェンジ・ターン //------------------------------ if (shogiGui.ResponseData.ChangedTurn) { shogiGui.ChangeTurn(); } //------------------------------ // 符号表示 //------------------------------ { Node <ShootingStarlightable, KyokumenWrapper> node6 = shogiGui.GameViewModel.Kifu.CurNode; RO_Star_Koma koma = Util_Koma.AsKoma(((ShootingStarlightable)node6.Key).LongTimeAgo); FugoJ fugoJ = JFugoCreator15Array.ItemMethods[(int)Haiyaku184Array.Syurui(koma.Haiyaku)](node6.Key, new KyokumenWrapper(shogiGui.GameViewModel.GuiSkyConst));//「▲2二角成」なら、馬(dst)ではなくて角(src)。 string fugoJStr = fugoJ.ToText_UseDou(node6); shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJStr); } shogiGui.ResponseData.RedrawStarlights(); // 再描画1 shogiGui.ResponseData.InputTextString = restText; //追加 shogiGui.ResponseData.ToRedraw(); // GUIに通知するだけ。 return(true); }
/// <summary> /// ************************************************************************************************************************ /// 動かしたい駒の解除 /// ************************************************************************************************************************ /// </summary> /// <param name="x"></param> /// <param name="y"></param> public bool DeselectByMouse(int x, int y, NarabeRoomViewModel 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 virtual void Step2_Compile_AllWidget(object obj_shogiGui) { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui; foreach (UserWidget widget in shogiGui.Shape_PnlTaikyoku.Widgets.Values) { widget.Compile(); } }
/// <summary> /// 局面に合わせて、駒ボタンのx,y位置を変更します /// </summary> /// <param name="btnKoma">駒</param> public static void Redraw_KomaLocation( Finger figKoma, NarabeRoomViewModel shogiGui ) { RO_Star_Koma koma = Util_Koma.AsKoma(shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(figKoma).Now); Shape_BtnKoma btnKoma = Util_InGui.FingerToKomaBtn(figKoma, shogiGui); int suji; int dan; Util_MasuNum.MasuToSuji(koma.Masu, out suji); Util_MasuNum.MasuToDan(koma.Masu, out dan); switch (Util_Masu.GetOkiba(koma.Masu)) { case Okiba.ShogiBan: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.Shogiban.SujiToX(suji), shogiGui.Shape_PnlTaikyoku.Shogiban.DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.Sente_Komadai: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.KomadaiArr[0].SujiToX(suji), shogiGui.Shape_PnlTaikyoku.KomadaiArr[0].DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.Gote_Komadai: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.KomadaiArr[1].SujiToX(suji), shogiGui.Shape_PnlTaikyoku.KomadaiArr[1].DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; case Okiba.KomaBukuro: btnKoma.SetBounds(new Rectangle( shogiGui.Shape_PnlTaikyoku.KomadaiArr[2].SujiToX(suji), shogiGui.Shape_PnlTaikyoku.KomadaiArr[2].DanToY(dan), btnKoma.Bounds.Width, btnKoma.Bounds.Height )); break; } }
/// <summary> /// つまんでいる駒。 /// </summary> /// <returns>つまんでいる駒。なければヌル</returns> public Shape_BtnKoma Btn_TumandeiruKoma(object obj_shogiGui) { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui; Shape_BtnKoma found = null; if (-1 != shogiGui.Shape_PnlTaikyoku.FigTumandeiruKoma) { found = this.BtnKomaDoors[shogiGui.Shape_PnlTaikyoku.FigTumandeiruKoma]; } return(found); }
public ShogiEngineLiveImpl(NarabeRoomViewModel ownerShogiGui) { this.ShogiEngineManInterface = new ShogiEngineManInterfaceImpl(); this.ShogiEngineManInterface.ShogiServerMessenger.Delegate_ShogiServer_ToEngine = (string line) => { // // USIコマンドを将棋エンジンに送ったタイミングで、なにかすることがあれば、 // ここに書きます。 // Logger.WriteLineS(line); }; }
/// <summary> /// ************************************************************************************************************************ /// 対局の描画の一式は、ここに書きます。 /// ************************************************************************************************************************ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void Paint( object sender, PaintEventArgs e, NarabeRoomViewModel shogiGui ) { 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.BtnKomaDoors) { koma.Paint(e.Graphics, shogiGui); } //---------- // 符号表示 //---------- this.lblFugo.Paint(e.Graphics); //---------- // 先後表示 //---------- this.lblPside.Text = Converter04.Pside_ToKanji(shogiGui.GameViewModel.Kifu.CountPside(Util_InServer.CountCurTesumi2(shogiGui))); this.lblPside.Paint(e.Graphics); foreach (UserWidget widget in this.Widgets.Values) { widget.Paint(e.Graphics); } 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, NarabeRoomViewModel shogiGui) { Shape_BtnKoma found = null; int hKoma = (int)koma; if (0 <= hKoma && hKoma < shogiGui.Shape_PnlTaikyoku.BtnKomaDoors.Length) { found = shogiGui.Shape_PnlTaikyoku.BtnKomaDoors[hKoma]; } return(found); }
/// <summary> /// 駒のハンドル(*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, NarabeRoomViewModel shogiGui) { List <Shape_BtnKoma> btns = new List <Shape_BtnKoma>(); foreach (int handle in hKomas) { Shape_BtnKoma btn = shogiGui.Shape_PnlTaikyoku.BtnKomaDoors[handle]; if (null != btn) { btns.Add(btn); } } return(btns); }
/// <summary> /// 取った駒がある場合のみ。 /// </summary> /// <param name="koma_Food_after"></param> /// <param name="shogiGui"></param> public static void Komamove1a_51Gui( bool torareruKomaAri, RO_Star_Koma koma_Food_after, NarabeRoomViewModel shogiGui ) { if (torareruKomaAri) { //------------------------------ // 「取った駒種類_巻戻し用」を棋譜に覚えさせます。(差替え) //------------------------------ shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma = koma_Food_after;//2014-10-19 21:04 追加 } shogiGui.ResponseData.RedrawStarlights(); }
/// <summary> /// v(^▽^)v超能力『メナス』だぜ☆ 未来の脅威を予測し、可視化するぜ☆www /// </summary> public static void Menace(NarabeRoomViewModel shogiGui) { if (0 < shogiGui.GameViewModel.GuiTesumi) { // 処理の順序が悪く、初回はうまく判定できない。 SkyConst src_Sky = shogiGui.GameViewModel.GuiSkyConst; //---------- // 将棋盤上の駒 //---------- shogiGui.ResponseData.ToRedraw(); // [クリアー] shogiGui.Shape_PnlTaikyoku.Shogiban.ClearHMasu_KikiKomaList(); // 全駒 foreach (Finger figKoma in Finger_Honshogi.Items_KomaOnly) { RO_Star_Koma koma = Util_Koma.AsKoma(src_Sky.StarlightIndexOf(figKoma).Now); if ( Okiba.ShogiBan == Util_Masu.Masu_ToOkiba(koma.Masu) && shogiGui.GameViewModel.GuiPside != koma.Pside ) { // 駒の利き SySet <SyElement> kikiZukei = Util_Sky.KomaKidou_Potential(figKoma, src_Sky); IEnumerable <SyElement> kikiMasuList = kikiZukei.Elements; foreach (SyElement masu in kikiMasuList) { // その枡に利いている駒のハンドルを追加 if (Masu_Honshogi.Error != masu) { shogiGui.Shape_PnlTaikyoku.Shogiban.HMasu_KikiKomaList[Util_Masu.AsMasuNumber(masu)].Add((int)figKoma); } } } } } }
/// <summary> /// ************************************************************************************************************************ /// [巻戻し]ボタン /// ************************************************************************************************************************ /// </summary> public static bool Makimodosi_Gui( NarabeRoomViewModel shogiGui, Finger movedKoma, Finger foodKoma, string fugoJStr, string backedInputText) { //------------------------------ // チェンジターン //------------------------------ shogiGui.ChangeTurn();//[巻戻し]ボタンを押したあと //------------------------------ // 符号表示 //------------------------------ shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJStr); Shape_BtnKoma btn_movedKoma = Util_InGui.FingerToKomaBtn(movedKoma, shogiGui); Shape_BtnKoma btn_foodKoma = Util_InGui.FingerToKomaBtn(foodKoma, shogiGui);//取られた駒 //------------------------------------------------------------ // 駒・再描画 //------------------------------------------------------------ if ( null != btn_movedKoma //動かした駒 || null != btn_foodKoma //取ったときに下にあった駒(巻戻しのときは、これは無し) ) { shogiGui.ResponseData.RedrawStarlights();// 駒の再描画要求 } // 巻き戻したので、符号が入ります。 { shogiGui.ResponseData.InputTextString = fugoJStr + " " + backedInputText;// 入力欄 shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; } shogiGui.ResponseData.ToRedraw(); return(true); }
public static void Komamove1a_49Gui( out PieceType toSyurui, out Starlight dst, Shape_BtnKoma btnKoma_Selected, Shape_BtnMasu btnMasu, NarabeRoomViewModel shogiGui ) { // 駒の種類 if (shogiGui.Shape_PnlTaikyoku.Naru) { // 成ります toSyurui = KomaSyurui14Array.NariCaseHandle[(int)Haiyaku184Array.Syurui(Util_Koma.AsKoma(shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku)]; shogiGui.Shape_PnlTaikyoku.SetNaruFlag(false); } else { // そのまま toSyurui = Haiyaku184Array.Syurui(Util_Koma.AsKoma(shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now).Haiyaku); } // 置く駒 { dst = new RO_MotionlessStarlight( //btnKoma_Selected.Finger, new RO_Star_Koma( Util_Koma.AsKoma(shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Finger).Now).Pside, btnMasu.Zahyo, toSyurui ) ); } //------------------------------------------------------------ // 「取った駒種類_巻戻し用」をクリアーします。 //------------------------------------------------------------ shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma = null; }
public override void Step3_SetEvent(object obj_shogiGui) { NarabeRoomViewModel shogiGui1 = (NarabeRoomViewModel)obj_shogiGui; //---------- // 将棋エンジン起動ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnShogiEngineKido"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; ui_PnlMain.ShogiGui.Start(ui_PnlMain.SetteiFile.ShogiEngineFilePath); }; } }
public static void Check_MouseoverKomaKiki(object obj_shogiGui, Finger finger) { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui; Starlight light = shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(finger); shogiGui.Shape_PnlTaikyoku.Shogiban.KikiBan = new SySet_Default <SyElement>("利き盤");// .Clear(); // 駒の利き SySet <SyElement> kikiZukei = Util_Sky.KomaKidou_Potential(finger, shogiGui.GameViewModel.GuiSkyConst); //kikiZukei.DebugWrite("駒の利きLv1"); // 味方の駒 Node <ShootingStarlightable, KyokumenWrapper> siteiNode = KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu); SySet <SyElement> mikataZukei = Util_Sky.Masus_Now(siteiNode.Value.ToKyokumenConst, Util_InServer.CurPside(shogiGui)); //mikataZukei.DebugWrite("味方の駒"); // 駒の利き上に駒がないか。 SySet <SyElement> ban2 = kikiZukei.Minus_Closed(mikataZukei); //kikiZukei.DebugWrite("駒の利きLv2"); shogiGui.Shape_PnlTaikyoku.Shogiban.KikiBan = ban2; }
private void After_NaruNaranai( NarabeRoomViewModel shogiGui , Shape_BtnKoma btnTumandeiruKoma ) { // 駒を動かします。 { // GuiからServerへ渡す情報 PieceType syurui; Starlight dst; Util_InGui.Komamove1a_49Gui(out syurui, out dst, btnTumandeiruKoma, shogiGui.Shape_PnlTaikyoku.NaruBtnMasu, shogiGui); // ServerからGuiへ渡す情報 bool torareruKomaAri; RO_Star_Koma koma_Food_after; Util_InServer.Komamove1a_50Srv(out torareruKomaAri, out koma_Food_after, dst, btnTumandeiruKoma.Koma, Util_Koma.AsKoma(dst.Now), shogiGui); Util_InGui.Komamove1a_51Gui(torareruKomaAri, koma_Food_after, shogiGui); } { //---------- // 移動済表示 //---------- shogiGui.Shape_PnlTaikyoku.SetHMovedKoma(btnTumandeiruKoma.Finger); //------------------------------ // 棋譜に符号を追加(マウスボタンが放されたとき)TODO:まだ早い。駒が成るかもしれない。 //------------------------------ // 棋譜 ShootingStarlightable move = new RO_ShootingStarlight( //btnTumandeiruKoma.Finger, shogiGui.Shape_PnlTaikyoku.MouseStarlightOrNull2.Now, shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnTumandeiruKoma.Finger).Now, shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma != null ? shogiGui.Shape_PnlTaikyoku.MousePos_FoodKoma.Syurui : PieceType.None );// 選択している駒の元の場所と、移動先 { StartposImporter.Assert_HirateHonsyogi(new SkyBuffer(shogiGui.GameViewModel.GuiSkyConst), "newNode作成前"); KifuNode newNode = new KifuNodeImpl( move, new KyokumenWrapper(shogiGui.GameViewModel.GuiSkyConst), KifuNodeImpl.GetReverseTebanside(((KifuNode)shogiGui.GameViewModel.Kifu.CurNode).Tebanside) ); StartposImporter.Assert_HirateHonsyogi(new SkyBuffer(newNode.Value.ToKyokumenConst), "newNode作成後"); //「成る/成らない」ボタンを押したときです。 ((KifuNode)KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu)).AppendChildA_New(newNode); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここで棋譜の変更をします。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Util_InServer.SetCurNode_Srv(shogiGui, newNode); shogiGui.ResponseData.ToRedraw(); } //------------------------------ // 符号表示 //------------------------------ RO_Star_Koma koma = Util_Koma.AsKoma(move.LongTimeAgo); FugoJ fugoJ; fugoJ = JFugoCreator15Array.ItemMethods[(int)Haiyaku184Array.Syurui(koma.Haiyaku)](move, new KyokumenWrapper(shogiGui.GameViewModel.GuiSkyConst));//「▲2二角成」なら、馬(dst)ではなくて角(src)。 shogiGui.Shape_PnlTaikyoku.SetFugo(fugoJ.ToText_UseDou( KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu) )); //------------------------------ // チェンジターン //------------------------------ if (!shogiGui.Shape_PnlTaikyoku.Requested_NaruDialogToShow) { //System.C onsole.WriteLine("マウス左ボタンを押したのでチェンジターンします。"); shogiGui.ChangeTurn(); } } shogiGui.ResponseData.RedrawStarlights();// 駒の再描画要求 //System.C onsole.WriteLine("つまんでいる駒を放します。(6)"); shogiGui.Shape_PnlTaikyoku.SetFigTumandeiruKoma(-1);//駒を放した扱いです。 shogiGui.Shape_PnlTaikyoku.SetNaruMasu(null); shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; shogiGui.ResponseData.ToRedraw(); ShootingStarlightable last; { Node <ShootingStarlightable, KyokumenWrapper> kifuElement = KifuNarabe_KifuWrapper.CurNode(shogiGui.GameViewModel.Kifu); last = (ShootingStarlightable)kifuElement.Key; } shogiGui.ChangeTurn();//マウス左ボタンを押したのでチェンジターンします。 shogiGui.Shape_PnlTaikyoku.Request_NaruDialogToShow(false); shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaru").Visible = false; shogiGui.Shape_PnlTaikyoku.GetWidget("BtnNaranai").Visible = false; shogiGui.SetScene(SceneName.SceneB_1TumamitaiKoma); }
public virtual void Step3_SetEvent(object obj_shogiGui) { NarabeRoomViewModel shogiGui1 = (NarabeRoomViewModel)obj_shogiGui; //---------- // [成る]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnNaru"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.Shape_PnlTaikyoku.SetNaruFlag(true); this.After_NaruNaranai( shogiGui , btnKoma_Selected ); }; } //---------- // [成らない]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnNaranai"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.Shape_PnlTaikyoku.SetNaruFlag(false); this.After_NaruNaranai( shogiGui , btnKoma_Selected ); }; } //---------- // [クリアー]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnClear"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Util_Lua_KifuNarabe.ShogiGui = shogiGui; Util_Lua_KifuNarabe.Perform("click_clearButton"); }; } //---------- // [再生]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnPlay"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Util_Lua_KifuNarabe.ShogiGui = shogiGui; Util_Lua_KifuNarabe.Perform("click_playButton"); }; } //---------- // [コマ送り]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnForward"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; string restText = Util_InGui.ReadLine_FromTextbox(); Util_InServer.Komaokuri_Srv(ref restText, shogiGui); Util_InGui.Komaokuri_Gui(restText, shogiGui); Util_Menace.Menace(shogiGui);// メナス }; } //---------- // [巻戻し]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnBackward"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; Finger movedKoma; Finger foodKoma;//取られた駒 string fugoJStr; if (!Util_InServer.Makimodosi_Srv(out movedKoma, out foodKoma, out fugoJStr, shogiGui)) { goto gt_EndBlock; } Util_InGui.Makimodosi_Gui(shogiGui, movedKoma, foodKoma, fugoJStr, Util_InGui.ReadLine_FromTextbox()); Util_Menace.Menace(shogiGui);//メナス gt_EndBlock: ; }; } //---------- // ログ出せボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnLogdase"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; ui_PnlMain.ShogiGui.Logdase(); }; } //---------- // [壁置く]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnKabeOku"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; // [壁置く]←→[駒動かす]切替 switch (widget.Text) { case "壁置く": widget.Text = "駒動かす"; break; default: widget.Text = "壁置く"; break; } shogiGui.ResponseData.ToRedraw(); }; } //---------- // [出力切替]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnSyuturyokuKirikae"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; switch (shogiGui.Shape_PnlTaikyoku.SyuturyokuKirikae) { case SyuturyokuKirikae.Japanese: shogiGui.Shape_PnlTaikyoku.SetSyuturyokuKirikae(SyuturyokuKirikae.Sfen); break; case SyuturyokuKirikae.Sfen: shogiGui.Shape_PnlTaikyoku.SetSyuturyokuKirikae(SyuturyokuKirikae.Html); break; case SyuturyokuKirikae.Html: shogiGui.Shape_PnlTaikyoku.SetSyuturyokuKirikae(SyuturyokuKirikae.Japanese); break; } shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; }; } //---------- // [▲]~[打]符号ボタン //---------- { 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 = shogiGui1.Shape_PnlTaikyoku.GetWidget(buttonName); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.ResponseData.SetAppendInputTextString(shogiGui.Shape_PnlTaikyoku.GetWidget(buttonName).Fugo); }; } } //---------- // [全消]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnFugo_Zenkesi"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; shogiGui.ResponseData.InputTextString = ""; }; } //---------- // [ここから採譜]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnFugo_KokokaraSaifu"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; ui_PnlMain.ShogiGui.GameViewModel.Kifu.SetStartpos_KokokaraSaifu(Util_InServer.CurPside(ui_PnlMain.ShogiGui)); shogiGui.ResponseData.OutputTxt = ResponseGedanTxt.Kifu; }; } //---------- // 初期配置ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnSyokihaichi"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; WidgetsLoader_KifuNarabe.Perform_SyokiHaichi(ui_PnlMain); }; } //---------- // [向き]ボタン //---------- { UserWidget widget = shogiGui1.Shape_PnlTaikyoku.GetWidget("BtnMuki"); widget.Delegate_MouseHitEvent = ( object obj_shogiGui2 , Shape_BtnKoma btnKoma_Selected ) => { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui2; Ui_PnlMain ui_PnlMain = ((Ui_ShogiForm1)shogiGui.OwnerForm).Ui_PnlMain1; Shape_BtnKoma movedKoma = shogiGui.Shape_PnlTaikyoku.Btn_MovedKoma(); RO_Star_Koma koma; Finger figKoma = Fingers.Error_1; if (null != movedKoma) { //>>>>> 移動直後の駒があるとき koma = Util_Koma.AsKoma(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(movedKoma.Finger).Now); figKoma = movedKoma.Finger; } else if (null != btnKoma_Selected) { //>>>>> 選択されている駒があるとき koma = Util_Koma.AsKoma(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(btnKoma_Selected.Koma).Now); figKoma = btnKoma_Selected.Koma; } else { koma = null; } if (null != koma) { switch (koma.Pside) { case Playerside.P1: { SkyBuffer buffer_Sky = new SkyBuffer(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst); buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight( //figKoma, new RO_Star_Koma(Playerside.P2, koma.Masu, Haiyaku184Array.Syurui(koma.Haiyaku)) )); KifuNode modifyNode = new KifuNodeImpl( ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode.Key, //現在の局面を流用 new KyokumenWrapper(new SkyConst(buffer_Sky)), ((KifuNode)ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode).Tebanside ); // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ // ここで局面データを変更します。 // ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Util_InServer.SetCurNode_Srv(ui_PnlMain.ShogiGui, modifyNode); ui_PnlMain.ShogiGui.ResponseData.ToRedraw(); } break; case Playerside.P2: { SkyBuffer buffer_Sky = new SkyBuffer(ui_PnlMain.ShogiGui.GameViewModel.GuiSkyConst); buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight( //figKoma, new RO_Star_Koma(Playerside.P1, koma.Masu, Haiyaku184Array.Syurui(koma.Haiyaku)) )); KifuNode modifyNode = new KifuNodeImpl( ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode.Key, //現在の局面を流用 new KyokumenWrapper(new SkyConst(buffer_Sky)), ((KifuNode)ui_PnlMain.ShogiGui.GameViewModel.Kifu.CurNode).Tebanside ); // ここで局面データを変更します。 Util_InServer.SetCurNode_Srv(ui_PnlMain.ShogiGui, modifyNode); ui_PnlMain.ShogiGui.ResponseData.ToRedraw(); } break; } } }; } }
/// <summary> /// HTML出力。(これは作者のホームページ用に書かれています) /// </summary> public static string CreateHtml(NarabeRoomViewModel shogiGui) { 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 = shogiGui.GameViewModel.GuiSkyConst; siteiSky.Foreach_Starlights((Finger finger, Starlight ml, ref bool toBreak) => { RO_Star_Koma koma = Util_Koma.AsKoma(ml.Now); if (Util_Masu.GetOkiba(koma.Masu) == Okiba.Gote_Komadai) { sb.Append(KomaSyurui14Array.Fugo[(int)Haiyaku184Array.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, Starlight ml, ref bool toBreak) => { RO_Star_Koma koma2 = Util_Koma.AsKoma(ml.Now); int suji2; Util_MasuNum.MasuToSuji(koma2.Masu, out suji2); int dan2; Util_MasuNum.MasuToDan(koma2.Masu, out dan2); if ( Util_Masu.GetOkiba(koma2.Masu) == Okiba.ShogiBan && //盤上 suji2 == suji && dan2 == dan ) { if (Playerside.P2 == koma2.Pside) { sb.Append("<td><span class=\"koma2x\">"); sb.Append(KomaSyurui14Array.Fugo[(int)Haiyaku184Array.Syurui(koma2.Haiyaku)]); sb.Append("</span></td>"); isSpace = false; } else { sb.Append("<td><span class=\"koma1x\">"); sb.Append(KomaSyurui14Array.Fugo[(int)Haiyaku184Array.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, Starlight ml, ref bool toBreak) => { RO_Star_Koma koma = Util_Koma.AsKoma(ml.Now); if (Util_Masu.GetOkiba(koma.Masu) == Okiba.Sente_Komadai) { sb.Append(KomaSyurui14Array.Fugo[(int)Haiyaku184Array.Syurui(koma.Haiyaku)]); } }); sb.AppendLine(" </div>"); sb.AppendLine(" </div>"); // sb.AppendLine("</div>"); return(sb.ToString()); }
public virtual void Step1_ReadFile(object obj_shogiGui) { NarabeRoomViewModel shogiGui = (NarabeRoomViewModel)obj_shogiGui; List <List <string> > rows = Util_Csv.ReadCsv(this.FileName, Encoding.UTF8); // 最初の1行は、列名。 Dictionary <string, int> columnNameIndex = new Dictionary <string, int>(); { int i = 0; foreach (string columnName in rows[0]) { columnNameIndex.Add(columnName, i); i++; } } rows.RemoveRange(0, 1); foreach (List <string> row in rows) { if (0 == row.Count) { // 列のない行は無視します。 goto gt_NextRow; } // // 名称 // if (!columnNameIndex.ContainsKey("name")) { // name列のない行は無視します。 goto gt_NextRow; } string name = row[columnNameIndex["name"]]; // // 型 // string type = "Button"; // 既定値:ボタン if (columnNameIndex.ContainsKey("type")) { type = row[columnNameIndex["type"]]; } // // ウィンドウ・ガジェット生成、パネルへ追加 // UserWidget widget; switch (type) { case "Masu": widget = new UserMasuImpl(new Shape_BtnMasuImpl()); break; default: //Button widget = new UserButtonImpl(new Shape_BtnBoxImpl()); break; } widget.Type = type; widget.Name = name; shogiGui.Shape_PnlTaikyoku.SetWidget(name, widget); // // 「IsLight_OnFlowB_1TumamitaiKoma」のTRUE/FALSE // if (columnNameIndex.ContainsKey("IsLight_OnFlowB_1TumamitaiKoma")) { string value = row[columnNameIndex["IsLight_OnFlowB_1TumamitaiKoma"]]; bool b; if (bool.TryParse(value, out b)) { widget.IsLight_OnFlowB_1TumamitaiKoma = b; } } // // 「x」 // if (columnNameIndex.ContainsKey("x")) { string value = row[columnNameIndex["x"]]; int x; if (int.TryParse(value, out x)) { widget.SetBounds(new Rectangle(x, widget.Bounds.Y, widget.Bounds.Width, widget.Bounds.Height)); } } // // 「y」 // if (columnNameIndex.ContainsKey("y")) { string value = row[columnNameIndex["y"]]; int y; if (int.TryParse(value, out y)) { widget.SetBounds(new Rectangle(widget.Bounds.X, y, widget.Bounds.Width, widget.Bounds.Height)); } } // // 「label」 // if (columnNameIndex.ContainsKey("label")) { string value = row[columnNameIndex["label"]]; widget.Text = value; } // // 「fontSize」 // if (columnNameIndex.ContainsKey("fontSize")) { string value = row[columnNameIndex["fontSize"]]; float fontSize; if (float.TryParse(value, out fontSize)) { widget.FontSize = fontSize; } } // // 「fugo」 // if (columnNameIndex.ContainsKey("fugo")) { string value = row[columnNameIndex["fugo"]]; widget.Fugo = value; } // // 「width」 // if (columnNameIndex.ContainsKey("width")) { string value = row[columnNameIndex["width"]]; int width; if (int.TryParse(value, out width)) { widget.SetBounds(new Rectangle(widget.Bounds.X, widget.Bounds.Y, width, widget.Bounds.Height)); } } // // 「height」 // if (columnNameIndex.ContainsKey("height")) { string value = row[columnNameIndex["height"]]; int height; if (int.TryParse(value, out height)) { widget.SetBounds(new Rectangle(widget.Bounds.X, widget.Bounds.Y, widget.Bounds.Width, height)); } } // // 「visible」 // if (columnNameIndex.ContainsKey("visible")) { string value = row[columnNameIndex["visible"]]; bool visible; if (bool.TryParse(value, out visible)) { widget.Visible = visible; } } // // 「backColor」 // if (columnNameIndex.ContainsKey("backColor")) { string value = row[columnNameIndex["backColor"]]; if ("" != value) { widget.BackColor = Color.FromName(value); } } // // 「okiba」 // if (columnNameIndex.ContainsKey("okiba")) { string value = row[columnNameIndex["okiba"]]; switch (value) { case "ShogiBan": widget.Okiba = Okiba.ShogiBan; break; case "Sente_Komadai": widget.Okiba = Okiba.Sente_Komadai; break; case "Gote_Komadai": widget.Okiba = Okiba.Gote_Komadai; break; case "KomaBukuro": widget.Okiba = Okiba.KomaBukuro; break; default: break; } } // // 「suji」 // if (columnNameIndex.ContainsKey("suji")) { string value = row[columnNameIndex["suji"]]; int suji; if (int.TryParse(value, out suji)) { widget.Suji = suji; } } // // 「dan」 // if (columnNameIndex.ContainsKey("dan")) { string value = row[columnNameIndex["dan"]]; int dan; if (int.TryParse(value, out dan)) { widget.Dan = dan; } } // // 「masuHandle」 // if (columnNameIndex.ContainsKey("masuHandle")) { string value = row[columnNameIndex["masuHandle"]]; int masuHandle; if (int.TryParse(value, out masuHandle)) { widget.MasuHandle = masuHandle; } } gt_NextRow: ; } }
/// <summary> /// ************************************************************************************************************************ /// コンストラクターです。 /// ************************************************************************************************************************ /// </summary> public Ui_ShogiForm1(NarabeRoomViewModel owner) { this.owner = owner; InitializeComponent(); this.ui_PnlMain1.ShogiGui = this.owner; }
/// <summary> /// ************************************************************************************************************************ /// 駒ボタンの描画はここに書きます。 /// ************************************************************************************************************************ /// </summary> /// <param name="g1"></param> public void Paint(Graphics g1, NarabeRoomViewModel shogiGui) { if (!this.Visible) { goto gt_EndMethod; } //---------- // 背景 //---------- if (shogiGui.Shape_PnlTaikyoku.FigTumandeiruKoma == this.Finger) //>>>>> 駒をつまんでいる時 { g1.FillRectangle(Brushes.Brown, this.Bounds); // 駒の背景は茶色。 } else if (shogiGui.Shape_PnlTaikyoku.MovedKoma == this.Finger) //>>>>> 駒を移動した時 { g1.FillRectangle(Brushes.DarkKhaki, this.Bounds); // 駒の背景はカーキ。 } else if (this.Light) //>>>>> マウスカーソルが当たっている時 { } // この駒について。 RO_Star_Koma koma = Util_Koma.AsKoma(shogiGui.GameViewModel.GuiSkyConst.StarlightIndexOf(this.Finger).Now); //---------- // 配役画像 //---------- { Kh185 mobility = koma.Haiyaku; StringBuilder sb = new StringBuilder(); sb.Append("../../Profile/Data/img/mobility/"); sb.Append((int)mobility); sb.Append(".png"); Image img = Image.FromFile(sb.ToString()); if (koma.Pside == Playerside.P2) { // 画像を180度回転させたい☆ img.RotateFlip(RotateFlipType.Rotate180FlipNone); } else { } g1.DrawImage(img, this.Bounds); } //---------- // 枠線 //---------- { Pen pen; if (this.Light) { pen = Pens.Yellow; } else { pen = Pens.Black; } g1.DrawRectangle(pen, this.Bounds); } //---------- // 文字 //---------- if (koma.Pside == Playerside.P1) { //---------- // 先手 //---------- // // ただ描画するだけ☆ // this.PaintText(g1, koma, this.Bounds.Location); } else { //---------- // 後手 //---------- // // 180度回転させて描画するために、大掛かりになっています。 // //string moji = siteiSk.KomaDoors[this.KomaHandle].Text_Label; //---------- // 使用するフォント //---------- //Font fnt = new Font(FontFamily.GenericSerif, 20.0f); //---------- // 文字の大きさにあった白紙(b) //---------- Graphics bG; Bitmap bImg; { int w; int h; { //---------- // 文字の大きさを調べるための白紙(a) //---------- Bitmap aImg = new Bitmap(1, 1); //imgのGraphicsオブジェクトを取得 Graphics aG = Graphics.FromImage(aImg); //文字列を描画したときの大きさを計算する w = 48; h = 48; //w = (int)aG.MeasureString(moji, fnt).Width; //h = (int)fnt.GetHeight(aG); //if (w == 0 || h == 0) //{ // System.C onsole.WriteLine("moji=["+moji+"]"); //} //if (w < 1) //{ // w = 1; //} //if (h < 1) //{ // h = 1; //} aG.Dispose(); aImg.Dispose(); } bImg = new Bitmap(w, h); } // 文字描画 bG = Graphics.FromImage(bImg); this.PaintText(bG, koma, new Point(0, 0)); //bG.DrawString(moji, fnt, Brushes.Black, 0, 0); //---------- // 回転軸座標 //---------- float x = (float)this.Bounds.X + (float)this.Bounds.Width / 2; float y = (float)this.Bounds.Y + (float)this.Bounds.Height / 2; //---------- // 回転 //---------- // 180度で回転するための座標を計算 //ラジアン単位に変換 double d = 180 / (180 / Math.PI); //新しい座標位置を計算する float x1 = x + bImg.Width * (float)Math.Cos(d); float y1 = y + bImg.Width * (float)Math.Sin(d); float x2 = x - bImg.Height * (float)Math.Sin(d); float y2 = y + bImg.Height * (float)Math.Cos(d); //PointF配列を作成 PointF[] destinationPoints = { new PointF(x + (float)this.Bounds.Width / 2, y + (float)this.Bounds.Height / 2), new PointF(x1 + (float)this.Bounds.Width / 2, y1 + (float)this.Bounds.Height / 2), new PointF(x2 + (float)this.Bounds.Width / 2, y2 + (float)this.Bounds.Height / 2) }; //画像を描画 g1.DrawImage(bImg, destinationPoints); //リソースを解放する bImg.Dispose(); bG.Dispose(); //fnt.Dispose(); } // フィンガー g1.DrawString(this.Finger.ToString(), new Font(FontFamily.GenericSerif, 10.0f), Brushes.Black, this.Bounds.Location); ////---------- //// デバッグ用 ////---------- //if (true) //{ // string moji = siteiSk.KomaDoors[this.Handle].SrcOkiba.ToString(); // g1.DrawString(moji, new Font(FontFamily.GenericSerif, 12.0f), Brushes.Red, this.Bounds.Location); //} gt_EndMethod: ; }
/// <summary> /// ************************************************************************************************************************ /// 将棋盤の上の駒を、全て駒袋に移動します。 [クリアー] /// ************************************************************************************************************************ /// </summary> public static void ClearKifu(NarabeRoomViewModel shogiGui, Response response) { shogiGui.GameViewModel.Kifu.Clear();// 棋譜を空っぽにします。 SkyBuffer buffer_Sky = new SkyBuffer(shogiGui.GameViewModel.GuiSkyConst); int figKoma; // 先手 figKoma = (int)Finger_Honshogi.SenteOh; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(/*figKoma,*/ new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro01, PieceType.K))); //先手王 figKoma = (int)Finger_Honshogi.GoteOh; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro02, PieceType.K))); //後手王 figKoma = (int)Finger_Honshogi.Hi1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro03, PieceType.R))); //飛 figKoma = (int)Finger_Honshogi.Hi2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro04, PieceType.R))); figKoma = (int)Finger_Honshogi.Kaku1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro05, PieceType.B))); //角 figKoma = (int)Finger_Honshogi.Kaku2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro06, PieceType.B))); figKoma = (int)Finger_Honshogi.Kin1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro07, PieceType.G))); //金 figKoma = (int)Finger_Honshogi.Kin2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro08, PieceType.G))); figKoma = (int)Finger_Honshogi.Kin3; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro09, PieceType.G))); figKoma = (int)Finger_Honshogi.Kin4; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro10, PieceType.G))); figKoma = (int)Finger_Honshogi.Gin1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro11, PieceType.S))); //銀 figKoma = (int)Finger_Honshogi.Gin2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro12, PieceType.S))); figKoma = (int)Finger_Honshogi.Gin3; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro13, PieceType.S))); figKoma = (int)Finger_Honshogi.Gin4; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro14, PieceType.S))); figKoma = (int)Finger_Honshogi.Kei1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro15, PieceType.N))); //桂 figKoma = (int)Finger_Honshogi.Kei2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro16, PieceType.N))); figKoma = (int)Finger_Honshogi.Kei3; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro17, PieceType.N))); figKoma = (int)Finger_Honshogi.Kei4; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro18, PieceType.N))); figKoma = (int)Finger_Honshogi.Kyo1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro19, PieceType.L))); //香 figKoma = (int)Finger_Honshogi.Kyo2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro20, PieceType.L))); figKoma = (int)Finger_Honshogi.Kyo3; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro21, PieceType.L))); figKoma = (int)Finger_Honshogi.Kyo4; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro22, PieceType.L))); figKoma = (int)Finger_Honshogi.Fu1; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro23, PieceType.P))); //歩 figKoma = (int)Finger_Honshogi.Fu2; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro24, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu3; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro25, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu4; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro26, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu5; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro27, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu6; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro28, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu7; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro29, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu8; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro30, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu9; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P1, Masu_Honshogi.fukuro31, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu10; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro32, PieceType.P))); //歩 figKoma = (int)Finger_Honshogi.Fu11; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro33, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu12; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro34, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu13; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro35, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu14; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro36, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu15; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro37, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu16; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro38, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu17; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro39, PieceType.P))); figKoma = (int)Finger_Honshogi.Fu18; buffer_Sky.AddOverwriteStarlight(figKoma, new RO_MotionlessStarlight(new RO_Star_Koma(Playerside.P2, Masu_Honshogi.fukuro40, PieceType.P))); { KifuNode newNode = new KifuNodeImpl( Util_Sky.NullObjectMove, //ルートなので new KyokumenWrapper(new SkyConst(buffer_Sky)), Playerside.P2 ); Util_InServer.SetCurNode_Srv(shogiGui, newNode); response.ToRedraw(); shogiGui.GameViewModel.Kifu.SetProperty(KifuTreeImpl.PropName_Startpos, "9/9/9/9/9/9/9/9/9 b K1R1B1G2S2N2L2P9 k1r1b1g2s2n2l2p9 1"); } }
public TimedC(NarabeRoomViewModel shogiGui) { this.shogiGui = shogiGui; this.SaiseiEventQueue = new Queue <SaiseiEventState>(); }
public TimedB(NarabeRoomViewModel shogiGui) { this.shogiGui = shogiGui; this.MouseEventQueue = new Queue <MouseEventState>(); }
public TimedA(NarabeRoomViewModel shogiGui) { this.shogiGui = shogiGui; }
public static Node <ShootingStarlightable, KyokumenWrapper> CurNode(NarabeRoomViewModel shogiGui) { return(shogiGui.GameViewModel.Kifu.CurNode); }
/// <summary> /// 入力欄の表示・出力欄の表示・再描画 /// /// このメインパネルに何かして欲しいことがあれば、 /// RequestForMain に要望を入れて、この関数を呼び出してください。 /// /// 同時には処理できない項目もあります。 /// </summary> /// <param name="response"></param> public void Response( Mutex mutex, NarabeRoomViewModel shogiGui) { //------------------------------------------------------------ // 駒の座標再計算 //------------------------------------------------------------ if (shogiGui.ResponseData.Is_RedrawStarlights()) { this.ShogiGui.GameViewModel.GuiSkyConst.Foreach_Starlights((Finger finger, Starlight light, ref bool toBreak) => { Util_InGui.Redraw_KomaLocation(finger, this.ShogiGui); }); } shogiGui.ResponseData.Clear_RedrawStarlights(); //------------------------------ // 入力欄の表示 //------------------------------ if (shogiGui.ResponseData.CanInputTextFlag) { // 指定のテキストで上書きします。 this.SetInput1Text(shogiGui.ResponseData.InputTextString); } else if (shogiGui.ResponseData.CanAppendInputTextFlag) { // 指定のテキストを後ろに足します。 this.AppendInput1Text(shogiGui.ResponseData.AppendInputTextString); shogiGui.ResponseData.SetAppendInputTextString("");//要求の解除 } //------------------------------ // 出力欄(上・下段)の表示 //------------------------------ switch (shogiGui.ResponseData.OutputTxt) { case ResponseGedanTxt.Clear: { // 出力欄(上下段)を空っぽにします。 this.WriteLine_Syuturyoku(""); // ログ Logger.Trace(""); Logger.Trace(""); } break; case ResponseGedanTxt.Kifu: { // 出力欄(上下段)に、棋譜を出力します。 switch (this.ShogiGui.Shape_PnlTaikyoku.SyuturyokuKirikae) { case SyuturyokuKirikae.Japanese: this.WriteLine_Syuturyoku(KirokuGakari.ToJapaneseKifuText(this.ShogiGui.GameViewModel.Kifu)); break; case SyuturyokuKirikae.Sfen: this.WriteLine_Syuturyoku(KirokuGakari.ToSfen_PositionString(this.ShogiGui.GameViewModel.Kifu)); break; case SyuturyokuKirikae.Html: this.WriteLine_Syuturyoku(Ui_PnlMain.CreateHtml(this.ShogiGui)); break; } // ログ Logger.Trace(this.txtOutput1.Text); } break; default: // スルー break; } //------------------------------ // 再描画 //------------------------------ if (shogiGui.ResponseData.IsRedraw()) { this.Refresh(); shogiGui.ResponseData.ClearRedraw(); } }