Exemple #1
0
        /// <summary>
        /// PP 5枚の持駒
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="fvDirectory"></param>
        public static void Write_PP_5Mai(IEngineConf engineConf, FeatureVector fv, string fvDirectory)
        {
            var profilePath = System.Configuration.ConfigurationManager.AppSettings["Profile"];
            var toml        = Toml.ReadFile(Path.Combine(profilePath, "Engine.toml"));

            //StringBuilder sb = new StringBuilder();

            {
                PpItem_P1[] p1Items = new PpItem_P1[] {
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv12PP1pInFvDir")), "1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv13PP1pInFvDir")), "1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv14PP1pInFvDir")), "1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv15PP1pInFvDir")), "1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv26PP2pInFvDir")), "2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv27PP2pInFvDir")), "2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv28PP2pInFvDir")), "2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv29PP2pInFvDir")), "2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____),
                };
                foreach (PpItem_P1 item in p1Items)
                {
                    File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Moti.Format_PP_P1Moti_5Mai(fv, item.Title, item.P1_base));
                    //sb.AppendLine(item.Filepath);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// PP 19枚の持駒
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="fvDirectory"></param>
        public static void Write_PP_19Mai(IEngineConf engineConf, FeatureVector fv, string fvDirectory)
        {
            var profilePath = System.Configuration.ConfigurationManager.AppSettings["Profile"];
            var toml        = Toml.ReadFile(Path.Combine(profilePath, "Engine.toml"));

            //StringBuilder sb_result = new StringBuilder();

            {
                PpItem_P1[] p1Items = new PpItem_P1[] {
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv11PP1pInFvDir")), "1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____),
                    new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv25pp2pInFvDir")), "2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____),
                };
                foreach (PpItem_P1 item in p1Items)
                {
                    File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Moti.Format_PP_P1_Moti19Mai(fv, item.Title, item.P1_base));

                    //sb_result.AppendLine(item.Filepath);
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// テキストを作ります。
        /// PP の P1。19枚の持駒。
        /// </summary>
        /// <param name="fv"></param>
        /// <param name="title"></param>
        /// <param name="p1_base_motiFu">持ち駒の位置から。</param>
        /// <returns></returns>
        public static string Format_PP_P1_Moti19Mai(FeatureVector fv, string title, int p1_base_motiFu)
        {
            StringBuilder sb = new StringBuilder();

            //
            // コメント
            //
            sb.AppendLine("\"#紹介文\",");
            sb.AppendLine("\"#\",");
            sb.AppendLine("\"#ボナンザ6.0アレンジ式きふわらべ2駒関係\",");
            sb.AppendLine("\"#\",");
            sb.AppendLine("\"#----------------------------------------\",");
            sb.AppendLine("\"# ");
            sb.AppendLine(title);
            sb.AppendLine("\",");
            sb.AppendLine("\"#----------------------------------------\",");
            sb.AppendLine("\"#\",");
            sb.AppendLine("\"#常に先手は正の数、後手は負の数の絶対値が大きい方が有利。0は互角。\",");

            //
            // 仕様バージョン
            //
            sb.AppendLine();
            sb.AppendLine("\"Version\",1.0,");
            sb.AppendLine();

            //----------------------------------------
            // 19将棋盤リスト
            //----------------------------------------
            // vs 1P歩 81升
            // vs 1P香 81升
            // vs 1P桂 81升
            // vs 1P銀 81升
            // vs 1P金 81升
            // vs 1P飛 81升
            // vs 1P角 81升
            // vs 2P歩 81升
            // vs 2P香 81升
            // vs 2P桂 81升
            // vs 2P銀 81升
            // vs 2P金 81升
            // vs 2P飛 81升
            // vs 2P角 81升
            //----------------------------------------
            {
                List <PpItem_P2Banjo> p2List = new List <PpItem_P2Banjo>();
                //if (true)
                //{
                p2List.Add(new PpItem_P2Banjo("vs 1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____));//盤上の駒の項目位置
                p2List.Add(new PpItem_P2Banjo("vs 1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____));
                p2List.Add(new PpItem_P2Banjo("vs 1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____));
                p2List.Add(new PpItem_P2Banjo("vs 1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____));
                p2List.Add(new PpItem_P2Banjo("vs 1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____));
                p2List.Add(new PpItem_P2Banjo("vs 1P飛", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__));
                //}
                p2List.Add(new PpItem_P2Banjo("vs 1P角", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___));
                //if (true)
                //{
                p2List.Add(new PpItem_P2Banjo("vs 2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____));
                p2List.Add(new PpItem_P2Banjo("vs 2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____));
                p2List.Add(new PpItem_P2Banjo("vs 2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____));
                p2List.Add(new PpItem_P2Banjo("vs 2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____));
                p2List.Add(new PpItem_P2Banjo("vs 2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____));
                p2List.Add(new PpItem_P2Banjo("vs 2P飛", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__));
                //}
                p2List.Add(new PpItem_P2Banjo("vs 2P角", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___));
                foreach (PpItem_P2Banjo p2Item in p2List)
                {
                    sb.Append(Format_FeatureVector_PP_P1Moti.Format_19Shogibans(fv, p1_base_motiFu, p2Item));
                }
            }

            //----------------------------------------
            // vs 1P持ち歩 0~18枚
            // vs 1P持ち香 0~4枚
            // vs 1P持ち桂 0~4枚
            // vs 1P持ち銀 0~4枚
            // vs 1P持ち金 0~4枚
            // vs 1P持ち飛 0~2枚
            // vs 1P持ち角 0~2枚
            // vs 2P持ち歩 0~18枚
            // vs 2P持ち香 0~4枚
            // vs 2P持ち桂 0~4枚
            // vs 2P持ち銀 0~4枚
            // vs 2P持ち金 0~4枚
            // vs 2P持ち飛 0~2枚
            // vs 2P持ち角 0~2枚
            // 計 45項目
            //----------------------------------------
            int p1MaisuLength = 19;

            {
                List <PpItem_P2Moti> p2List = new List <PpItem_P2Moti>();


                // p2の 1Pと2P
                for (int p2Player = 1; p2Player < 3; p2Player++)
                {
                    int koumokuIndex;
                    if (p2Player == 1)
                    {
                        koumokuIndex = FeatureVectorImpl.CHOSA_KOMOKU_1P;
                    }
                    else if (p2Player == 2)
                    {
                        koumokuIndex = FeatureVectorImpl.CHOSA_KOMOKU_2P;
                    }
                    else
                    {
                        throw new Exception("範囲外");
                    }

                    // vs 持ち駒 1P歩x 0~18
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P歩x0~18", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____, 19));

                    // vs 持ち駒 1P香x 0~4
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P香x0~5", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____, 5));

                    // vs 持ち駒 1P桂x 0~4
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P桂x0~5", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____, 5));

                    // vs 持ち駒 1P銀x 0~4
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P銀x0~5", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____, 5));

                    // vs 持ち駒 1P金x 0~4
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P金x0~5", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____, 5));

                    // vs 持ち駒 1P飛x 0~4
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P飛x0~2", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIHISYA__, 3));

                    // vs 持ち駒 1P角x 0~4
                    p2List.Add(new PpItem_P2Moti(string.Format("vs 持ち駒 {0}P角x0~2", p2Player), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKAKU___, 3));
                }
                // 計90項目

                for (int moti = 0; moti < p2List.Count; moti++)
                {
                    // サンプルで作るだけ
                    sb.Append(Format_FeatureVector_PP_P1Moti.Format_MaisuList(fv, p1_base_motiFu, p1MaisuLength, p2List[moti]));
                }
            }


            return(sb.ToString());
        }