public Te fromjoseki(Kyokumenn k, int tesu) { //tesuには実際の手数が渡されるが、定跡データは0手目から始まるので1ずらしておく tesu = tesu - 1; //定跡にあった候補手を入れる List <Te> teList = new List <Te>(); //定跡で進めた局面を作り、渡された局面と比較する Kyokumenn josekiKyokumenn = new Kyokumenn(); for (int i = 0; i < numJoseki; i++) { //平手で初期化 josekiKyokumenn.BanShokika(); for (int j = 0; j < tesu; j++) { if (josekiData [i][j * 2] == (byte)0 || josekiData [i][j * 2] == (byte)0xff) { break; } Te te = josekiByteToTe(josekiData [i][j * 2], josekiData [i][j * 2 + 1], josekiKyokumenn); josekiKyokumenn.Move(te); josekiKyokumenn.turn += 1; } //局面が一致するか if (josekiKyokumenn.equals(k)) { if (josekiData [i][tesu * 2] == (byte)0 || josekiData [i][tesu * 2] == (byte)0xff) { continue; } //候補手を生成 Te te = josekiByteToTe(josekiData[i][tesu * 2], josekiData[i][tesu * 2 + 1], k); teList.Add(te); } } if (teList.Count == 0) { //候補手がない場合 /* * if(child != null){ * //子定跡がある時は、その結果を返す * return child.fromjoseki(k,tesu); * } */ //候補手がなかったのでnullを返す return(null); } else { //候補手の中からランダム //候補手がない場合 return(teList[UnityEngine.Random.Range(0, teList.Count)]); } }
//ゲームを初めから public void Restart() { popupCanvas.GetComponent <Canvas>().enabled = false; resultCanvas.GetComponent <Canvas>().enabled = false; sente.GetComponent <Text> ().text = "P"; gote.GetComponent <Text> ().text = "P"; turn.GetComponent <Text>().text = "先手"; vsCom = false; vsComGote = false; kk = new Kyokumenn(); kk.josekiBool = true; kihu = new List <Te> (); historykyokumenn = new List <Kyokumenn> (); this.isSelectKoma = 0; //スタート時は駒を選択していない sikou.DEPTH_MAX = 4; if (kihu.Count != 0) { kihu.Clear(); } kk.turn = 1; kk.BanShokika(); //初期盤面を入れる for (int masu = 0; masu <= 81; masu++) { kk.banKoma[masu] = Kyokumenn.SHOKI_BAN[masu]; } //ボタンを有効にし、駒を正しく for (int i = 1; i <= 81; i++) { Masu [i - 1].GetComponent <Button> ().interactable = true; Masu [i - 1].GetComponent <Image>().sprite = komaPicture[kk.banKoma[i]]; } for (int koma = 1; koma < 8; koma++) { hand[koma].GetComponent <Text>().text = kk.hand [1] [koma].ToString(); hand[koma + 8].GetComponent <Text>().text = kk.hand [0] [koma + 16].ToString(); } }