/// <summary> /// PP 盤上の駒 /// </summary> /// <param name="fv"></param> /// <param name="fvDirectory"></param> public static void Write_PP_Banjo(IEngineConf engineConf, FeatureVector fv, string fvDirectory) { // P1が盤上の駒 { PpItem_P1[] p1Items = new PpItem_P1[] { new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv04PP1pInFvDir")), "1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv05PP1pInFvDir")), "1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv06pp1pInFvDir")), "1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv07pp1pInFvDir")), "1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv08pp1pInFvDir")), "1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv09pp1pInFvDir")), "1P飛", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv10pp1pInFvDir")), "1P角", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv18pp2pInFvDir")), "2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv19pp2pInFvDir")), "2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv20pp2pInFvDir")), "2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv21pp2pInFvDir")), "2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv22pp2pInFvDir")), "2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv23pp2pInFvDir")), "2P飛", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PpItem_P1(Path.Combine(fvDirectory, engineConf.GetResourceBasename("Fv24pp2pInFvDir")), "2P角", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), }; foreach (PpItem_P1 item in p1Items) { File.WriteAllText(item.Filepath, Format_FeatureVector_PP_P1Banjo.Format_PP_P1Banjo(fv, item.Title, item.P1_base)); //sb.AppendLine(item.Filepath); } } }
/// <summary> /// テキストを作ります。 /// </summary> /// <param name="fv"></param> /// <param name="player"></param> /// <returns></returns> public static string Format_PP_P1Banjo(FeatureVector fv, string title, int p1_base) { 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(); //---------------------------------------- // vs 1P歩 // vs 1P香 // vs 1P桂 // vs 1P銀 // vs 1P金 // vs 1P飛 // vs 1P角 // vs 2P歩 // vs 2P香 // vs 2P桂 // vs 2P銀 // vs 2P金 // vs 2P飛 // vs 2P角 //---------------------------------------- { List <PpItem_P2> p2List = new List <PpItem_P2>() { new PpItem_P2("vs 1P歩", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PpItem_P2("vs 1P香", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PpItem_P2("vs 1P桂", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PpItem_P2("vs 1P銀", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PpItem_P2("vs 1P金", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PpItem_P2("vs 1P飛", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PpItem_P2("vs 1P角", FeatureVectorImpl.CHOSA_KOMOKU_1P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), new PpItem_P2("vs 2P歩", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____FU_____), new PpItem_P2("vs 2P香", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KYO____), new PpItem_P2("vs 2P桂", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KEI____), new PpItem_P2("vs 2P銀", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____GIN____), new PpItem_P2("vs 2P金", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KIN____), new PpItem_P2("vs 2P飛", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____HISYA__), new PpItem_P2("vs 2P角", FeatureVectorImpl.CHOSA_KOMOKU_2P + FeatureVectorImpl.CHOSA_KOMOKU_____KAKU___), }; foreach (PpItem_P2 p2Item in p2List) { sb.Append(Format_FeatureVector_PP_P1Banjo.Format_NestedShogiban_P1Banjo(fv, p1_base, p2Item)); } } //---------------------------------------- // vs 1P持ち歩 // vs 1P持ち香 // vs 1P持ち桂 // vs 1P持ち銀 // vs 1P持ち金 // vs 1P持ち飛 // vs 1P持ち角 // vs 2P持ち歩 // vs 2P持ち香 // vs 2P持ち桂 // vs 2P持ち銀 // vs 2P持ち金 // vs 2P持ち飛 // vs 2P持ち角 // 計 45項目 //---------------------------------------- { List <PpItem_P2> p2List = new List <PpItem_P2>(); // pieceの 1Pと2P for (int piecePlayer = 1; piecePlayer < 3; piecePlayer++) { int koumokuIndex; if (piecePlayer == 1) { koumokuIndex = FeatureVectorImpl.CHOSA_KOMOKU_1P; } else if (piecePlayer == 2) { koumokuIndex = FeatureVectorImpl.CHOSA_KOMOKU_2P; } else { throw new Exception("範囲外"); } // vs 持ち駒 1P歩x 0~18 for (int maisu = 0; maisu < 19; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P歩x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIFU_____ + maisu)); } // vs 持ち駒 1P香x 0~4 for (int maisu = 0; maisu < 5; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P香x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKYO____ + maisu)); } // vs 持ち駒 1P桂x 0~4 for (int maisu = 0; maisu < 5; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P桂x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKEI____ + maisu)); } // vs 持ち駒 1P銀x 0~4 for (int maisu = 0; maisu < 5; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P銀x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIGIN____ + maisu)); } // vs 持ち駒 1P金x 0~4 for (int maisu = 0; maisu < 5; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P金x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKIN____ + maisu)); } // vs 持ち駒 1P飛x 0~4 for (int maisu = 0; maisu < 3; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P飛x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIHISYA__ + maisu)); } // vs 持ち駒 1P角x 0~4 for (int maisu = 0; maisu < 3; maisu++)//枚数 { p2List.Add(new PpItem_P2(string.Format("vs 持ち駒 {0}P角x{1,2}", piecePlayer, maisu), koumokuIndex + FeatureVectorImpl.CHOSA_KOMOKU_MOTIKAKU___ + maisu)); } } // 計90項目 for (int moti = 0; moti < p2List.Count; moti++) { // サンプルで作るだけ sb.Append(Format_FeatureVector_PP_P1Banjo.Format_SingleShogiban_P1Banjo(fv, p1_base, p2List[moti])); } } return(sb.ToString()); }