/// <summary> /// 横一列に並んだ項目の数ではなく、 /// 横×縦の項目の個数を数えるぜ☆(^▽^) 数字を山分けするのに使うぜ☆(^▽^) /// </summary> /// <returns></returns> private static int KazoeruUmeruMasuNoKazu(NikomaKoumokuBangoHairetu hairetu) { return(0); //int masuNoKazu = 0; //for (int iGyoIndex = 0; iGyoIndex < hairetu.Nagasa; iGyoIndex++) //{ // int gyoBango = hairetu.Hairetu[iGyoIndex]; // for (int iRetuIndex = 0; iRetuIndex < hairetu.Nagasa; iRetuIndex++) // { // int retuBango = hairetu.Hairetu[iRetuIndex]; // if (gyoBango <= retuBango)// 組み合わせを反対から見ただけの同じものを弾くぜ☆(^~^) // { // continue; // } // bool erabu = false; // if (gyoBango < Util_NikomaKankei.MOTIKOMA_PART && retuBango < Util_NikomaKankei.MOTIKOMA_PART) // { // // 盤上×盤上 // if (Conv_NikomaKankei.BanjoKoumokuItiran[gyoBango] != Conv_NikomaKankei.BanjoKoumokuItiran[retuBango]) // { // erabu = true; // } // } // else if (gyoBango < Util_NikomaKankei.MOTIKOMA_PART && Util_NikomaKankei.MOTIKOMA_PART <= retuBango) // { // // 盤上×持駒 // erabu = true; // } // else if (Util_NikomaKankei.MOTIKOMA_PART <= gyoBango && retuBango < Util_NikomaKankei.MOTIKOMA_PART) // { // // 持駒×盤上 // erabu = true; // } // else if (Util_NikomaKankei.MOTIKOMA_PART <= gyoBango && Util_NikomaKankei.MOTIKOMA_PART <= retuBango) // { // // 持駒×持駒 // if (Conv_NikomaKankei.MotiKomas[gyoBango] != Conv_NikomaKankei.MotiKomas[retuBango]) // { // erabu = true; // } // } // if (erabu) // { // // 1 動かす☆ // masuNoKazu++; // } // } //} //return masuNoKazu; }
/// <summary> /// 項目番号 K の一覧を作るぜ☆(^~^) /// </summary> /// <returns></returns> public static void MakeKoumokuBangoHairetu_Subete(Kyokumen ky, NikomaKoumokuBangoHairetu koumokuBangoHairetu) { //koumokuBangoHairetu.Soji(); //// 盤上のパラメーター //// 盤上に実際に駒がある升☆ //Bitboard komaBB = new BitboardImpl(); //for (int iTai=0; iTai<Conv_Taikyokusya.Itiran.Length; iTai++) //{ // Taikyokusya tai = Conv_Taikyokusya.Itiran[iTai]; // for (int iKs = 0; iKs < Conv_Komasyurui.Itiran.Length; iKs++) // { // Komasyurui ks = Conv_Komasyurui.Itiran[iKs]; // komaBB.Set(ky.BB_Koma.Get(ks, tai)); // while (!komaBB.IsEmpty() && komaBB.Ref_PopNTZ(out Masu ms_jissai)) // { // // まず、大きく10区画「RZKHNrzkhn」に分かれているので、 // // komaArea = ( 0 ~ 10 ) に分けるぜ☆ // // area = 0 の場合、 0 以上 1 未満だぜ☆(^~^) // int komaArea = Conv_Koma.NikomaKankei_BanjoKomaArea[(int)Med_Koma.KomasyuruiAndTaikyokusyaToKoma(ks,tai)]; // if (-1 == komaArea) // { // throw new Exception("未定義の駒"); // } // // 駒種類 + 升☆(^▽^) // koumokuBangoHairetu.Tuika(komaArea * KyokumenImpl.MASUS + (int)ms_jissai); // } // } //} //// 持駒 //switch (ky.MotiKomas.Get(MotiKoma.Z)) //{ // case 0: break; // case 1: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 0); break;// 持駒の ▲ぞう1 だぜ☆(^▽^) // default: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 1); break;// 持駒の ▲ぞう2 だぜ☆(^▽^) //} //switch (ky.MotiKomas.Get(MotiKoma.K)) //{ // case 0: break; // case 1: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 2); break; // default: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 3); break; //} //switch (ky.MotiKomas.Get(MotiKoma.H)) //{ // case 0: break; // case 1: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 4); break; // default: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 5); break; //} //switch (ky.MotiKomas.Get(MotiKoma.z)) //{ // case 0: break; // case 1: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 6); break; // default: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 7); break; //} //switch (ky.MotiKomas.Get(MotiKoma.k)) //{ // case 0: break; // case 1: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 8); break; // default: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 9); break; //} //switch (ky.MotiKomas.Get(MotiKoma.h)) //{ // case 0: break; // case 1: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 10); break; // default: koumokuBangoHairetu.Tuika(Util_NikomaKankei.MOTIKOMA_PART + 11); break; //} }
/// <summary> /// 1対多 /// </summary> /// <param name="ninsyo"></param> /// <param name="ky"></param> /// <param name="hairetuTa"></param> /// <param name="listKN"></param> /// <returns></returns> public static Hyokati Kazoeru_NikomaKankeiHyokati_ItiTaiTa_SabunKosinYou(Kyokumen ky, int koumokuNo, NikomaKoumokuBangoHairetu hairetuTa) { return((Hyokati)0); //// 評価値: 浮動小数点数だと、差分更新でずれるので整数にするぜ☆(^▽^) //int hyokatiNumber = 0; ////int taKoumoku;// 項目1 //for (int iTaIndex = 0; iTaIndex < hairetuTa.Nagasa; iTaIndex++) //{ // // 列番号<行番号 の個所を使うようにするぜ☆(^▽^)関数(小さい数字,大きい数字)だぜ☆ そうでなければ逆立ちさせるぜ☆(^▽^)www // if (hairetuTa.Hairetu[iTaIndex] < koumokuNo) // { // hyokatiNumber += Util_NikomaKankei.GetHyokaNumber_SabunKosinYou(hairetuTa.Hairetu[iTaIndex], koumokuNo); // } // else if (koumokuNo < hairetuTa.Hairetu[iTaIndex]) // { // // 逆立ち☆(^▽^)www // hyokatiNumber += Util_NikomaKankei.GetHyokaNumber_SabunKosinYou(koumokuNo, hairetuTa.Hairetu[iTaIndex]); // } // // taKoumoku == koumokuNo // // 無視☆(^~^) //} //if (hyokatiNumber < Util_NikomaKankei.SAISYO_HYOKATI_SABUNKOSINYOU) //{ // hyokatiNumber = Util_NikomaKankei.SAISYO_HYOKATI_SABUNKOSINYOU; //} //else if (Util_NikomaKankei.SAIDAI_HYOKATI_SABUNKOSINYOU < hyokatiNumber) //{ // hyokatiNumber = Util_NikomaKankei.SAIDAI_HYOKATI_SABUNKOSINYOU; //} //if (ky.Teban == Taikyokusya.T2) //{ // hyokatiNumber = -hyokatiNumber; // 符号を反転して、対局者2視点に変えるぜ☆(^▽^) //} //return (Hyokati)hyokatiNumber; }