public MainDialogViewModel() { // デバッグ中。あとで削除する。 //Pos.InitBoard(BoardType.NoHandicap); // 指し手生成祭りの局面 // Pos.SetSfen("l6nl/5+P1gk/2np1S3/p1p4Pp/3P2Sp1/1PPb2P1P/P5GS1/R8/LN4bKL w RGgsn5p 1"); // 手駒が1種ずつあある局面 //Pos.SetSfen("l6n1/5+P1gk/2np1S3/p1p4Pp/3P2Sp1/1PPb2P1P/P5GSG/R8/LN5KL w rbgsnl5p 1"); // 入玉局面 //Pos.SetSfen("ln6+R/1+P2GKGBR/p1ppp+P+PP+P/1k7/1p7/9/PPPPP4/1B7/LNSG1GSNL b 2SNL3P 75"); // 成駒がいっぱいある局面 //Pos.SetSfen("ln6+R/1+P2GKGBR/p1ppp+P+PP+P/1k7/1p7/9/PPPPP4/1B7/+L+N+SG1GSNL b 2SNL3P 75"); #if false // 王手結構かかる局面 王手になる指し手の数 = 67 Pos.SetSfen("9/R1S1k1S2/2+P3+P2/2+P3+P2/2N3N2/B2L1L3/9/4+B4/K3L4 b R4G2S2NL14P 1"); var moves = new Move[(int)Move.MAX_MOVES]; int n = MoveGen.LegalAll(Pos, moves, 0); Console.WriteLine(n); int j = 0; for (int i = 0; i < n; ++i) { Pos.DoMove(moves[i]); if (Pos.InCheck()) { ++j; Console.WriteLine(j.ToString() + ":" + moves[i].Pretty()); } Pos.UndoMove(); } #endif #if false // psnの読み込み var manager = new KifuManager(); var pos = new Position(); manager.Bind(pos); var psn = System.IO.File.ReadAllText("kif/4.psn", Encoding.GetEncoding("Shift_JIS")); var error = manager.FromString(psn); Pos = pos; #endif }