// 駒移動処理 public void MoveKomaObj(string name, int x, int y) { bool motigomaFlag = false; // 持ち駒の場合 if (name.IndexOf(KomaConst.motigoma) > -1) { name = name.Replace(KomaConst.motigoma, ""); MotigomaManager motigomaManager = MotigomaManager.Instance; motigomaManager.Minus(name); if (KomaFunction.isSelfKoma(name)) { GameObject obj = transform.Find("../Motigoma1").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript> (); mSc.RefreshKoma(); } else { GameObject obj = transform.Find("../Motigoma2").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript> (); mSc.RefreshKoma(); } name = CreateKomaObj(name, x, y); MasuManager manager = MasuManager.Instance; manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(name)); manager.UpdMasuObjNameByXAndY(name, x, y); motigomaFlag = true; } GameObject gameObj = GameObject.Find(name); KomaScript sc = gameObj.GetComponent <KomaScript> (); gameObj.transform.position = new Vector3(basex - per1x * x, basey - per1y * y, 2); // 持ち駒でない場合 if (!motigomaFlag) { Debug.Log("motigomadenai " + name); execCheckGetEnemyKoma(name, x, y); execCheckNarigoma(name, x, y); // 移動前のマスを初期化 MasuManager manager = MasuManager.Instance; manager.EmptyMasu(sc.x, sc.y); sc.x = x; sc.y = y; manager.SetMasu(x, y, KomaFunction.GetKomaNameByObjName(name)); manager.UpdMasuObjNameByXAndY(name, x, y); } }
// 相手の駒を取ったか確認&実行時 void execCheckGetEnemyKoma(string objName, int x, int y) { GameObject gameObj = GameObject.Find(objName); KomaScript sc = gameObj.GetComponent <KomaScript>(); MasuManager manager = MasuManager.Instance; MasuInit masu = manager.GetMasu(x, y); MotigomaManager mManager = MotigomaManager.Instance; if (sc.selfFlag && masu.enemyFlag) { if (masu.komaName.Equals(KomaConst.komaOu2) || masu.komaName.Equals(KomaConst.komaGy2)) { mManager.Plus(KomaConst.komaOu); } else if (masu.komaName.Equals(KomaConst.komaHi2) || masu.komaName.Equals(KomaConst.komaRy2)) { mManager.Plus(KomaConst.komaHi); } else if (masu.komaName.Equals(KomaConst.komaKa2) || masu.komaName.Equals(KomaConst.komaUm2)) { mManager.Plus(KomaConst.komaKa); } else if (masu.komaName.Equals(KomaConst.komaKi2)) { mManager.Plus(KomaConst.komaKi); } else if (masu.komaName.Equals(KomaConst.komaGi2) || masu.komaName.Equals(KomaConst.komaNg2)) { mManager.Plus(KomaConst.komaGi); } else if (masu.komaName.Equals(KomaConst.komaKe2) || masu.komaName.Equals(KomaConst.komaNk2)) { mManager.Plus(KomaConst.komaKe); } else if (masu.komaName.Equals(KomaConst.komaKy2) || masu.komaName.Equals(KomaConst.komaNy2)) { mManager.Plus(KomaConst.komaKy); } else if (masu.komaName.Equals(KomaConst.komaFu2) || masu.komaName.Equals(KomaConst.komaTo2)) { mManager.Plus(KomaConst.komaFu); } GameObject obj = transform.Find("../Motigoma1").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript>(); mSc.RefreshKoma(); DestroyKomaObj(masu.objName); } else if (sc.enemyFlag && masu.selfFlag) { if (masu.komaName.Equals(KomaConst.komaOu) || masu.komaName.Equals(KomaConst.komaGy)) { mManager.Plus(KomaConst.komaOu2); } else if (masu.komaName.Equals(KomaConst.komaHi) || masu.komaName.Equals(KomaConst.komaRy)) { mManager.Plus(KomaConst.komaHi2); } else if (masu.komaName.Equals(KomaConst.komaKa) || masu.komaName.Equals(KomaConst.komaUm)) { mManager.Plus(KomaConst.komaKa2); } else if (masu.komaName.Equals(KomaConst.komaKi)) { mManager.Plus(KomaConst.komaKi2); } else if (masu.komaName.Equals(KomaConst.komaGi) || masu.komaName.Equals(KomaConst.komaNg)) { mManager.Plus(KomaConst.komaGi2); } else if (masu.komaName.Equals(KomaConst.komaKe) || masu.komaName.Equals(KomaConst.komaNk)) { mManager.Plus(KomaConst.komaKe2); } else if (masu.komaName.Equals(KomaConst.komaKy) || masu.komaName.Equals(KomaConst.komaNy)) { mManager.Plus(KomaConst.komaKy2); } else if (masu.komaName.Equals(KomaConst.komaFu) || masu.komaName.Equals(KomaConst.komaTo)) { mManager.Plus(KomaConst.komaFu2); } GameObject obj = transform.Find("../Motigoma2").gameObject; MotigomaScript mSc = obj.GetComponent <MotigomaScript>(); mSc.RefreshKoma(); DestroyKomaObj(masu.objName); } }
// 味方駒再描画 void RefreshKoma1() { RefreshInit1(); MotigomaManager manager = MotigomaManager.Instance; string[] komaNames = { KomaConst.komaOu, KomaConst.komaHi, KomaConst.komaKa, KomaConst.komaKi, KomaConst.komaGi, KomaConst.komaKe, KomaConst.komaKy, KomaConst.komaFu }; int i = 0; foreach (string komaName in komaNames) { if (komaName.Equals(KomaConst.komaOu) && manager.ou >= 1) { createKomaObj(KomaConst.komaOu, i, manager.ou); i++; } else if (komaName.Equals(KomaConst.komaHi) && manager.hi >= 1) { createKomaObj(KomaConst.komaHi, i, manager.hi); i++; } else if (komaName.Equals(KomaConst.komaKa) && manager.ka >= 1) { createKomaObj(KomaConst.komaKa, i, manager.ka); i++; } else if (komaName.Equals(KomaConst.komaKi) && manager.ki >= 1) { createKomaObj(KomaConst.komaKi, i, manager.ki); i++; } else if (komaName.Equals(KomaConst.komaGi) && manager.gi >= 1) { createKomaObj(KomaConst.komaGi, i, manager.gi); i++; } else if (komaName.Equals(KomaConst.komaKe) && manager.ke >= 1) { createKomaObj(KomaConst.komaKe, i, manager.ke); i++; } else if (komaName.Equals(KomaConst.komaKy) && manager.ky >= 1) { createKomaObj(KomaConst.komaKy, i, manager.ky); i++; } else if (komaName.Equals(KomaConst.komaFu) && manager.fu >= 1) { createKomaObj(KomaConst.komaFu, i, manager.fu); i++; } } }
// lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL // lnsgksnl/1r5b1/pppp1ppp/9/9/9/PPPPP1PPP/1B7/LNSGKGSNL // lnsgkgP+nl/1r5b1/pppppp1pp/9/9/9/PPPPPP1PP/1B5R1/LNSGKGSNL public string GetSfen() { string line = ""; int emptyCnt = 0; for (int y = 1; y <= 9; y++) { for (int x = 9; x >= 1; x--) { MasuInit masu = komas [x + "-" + y]; if (masu.exists && emptyCnt > 0) { line += emptyCnt; emptyCnt = 0; } if (masu.komaName.Equals(KomaConst.komaFu)) { line += "P"; } else if (masu.komaName.Equals(KomaConst.komaKy)) { line += "L"; } else if (masu.komaName.Equals(KomaConst.komaKe)) { line += "N"; } else if (masu.komaName.Equals(KomaConst.komaGi)) { line += "S"; } else if (masu.komaName.Equals(KomaConst.komaKi)) { line += "G"; } else if (masu.komaName.Equals(KomaConst.komaKa)) { line += "B"; } else if (masu.komaName.Equals(KomaConst.komaHi)) { line += "R"; } else if (masu.komaName.Equals(KomaConst.komaOu) || masu.komaName.Equals(KomaConst.komaGy)) { line += "K"; } else if (masu.komaName.Equals(KomaConst.komaFu2)) { line += "p"; } else if (masu.komaName.Equals(KomaConst.komaKy2)) { line += "l"; } else if (masu.komaName.Equals(KomaConst.komaKe2)) { line += "n"; } else if (masu.komaName.Equals(KomaConst.komaGi2)) { line += "s"; } else if (masu.komaName.Equals(KomaConst.komaKi2)) { line += "g"; } else if (masu.komaName.Equals(KomaConst.komaKa2)) { line += "b"; } else if (masu.komaName.Equals(KomaConst.komaHi2)) { line += "r"; } else if (masu.komaName.Equals(KomaConst.komaOu2) || masu.komaName.Equals(KomaConst.komaGy2)) { line += "k"; } else if (masu.komaName.Equals(KomaConst.komaTo)) { line += "P+"; } else if (masu.komaName.Equals(KomaConst.komaNy)) { line += "L+"; } else if (masu.komaName.Equals(KomaConst.komaNk)) { line += "N+"; } else if (masu.komaName.Equals(KomaConst.komaNg)) { line += "S+"; } else if (masu.komaName.Equals(KomaConst.komaUm)) { line += "B+"; } else if (masu.komaName.Equals(KomaConst.komaRy)) { line += "R+"; } else if (masu.komaName.Equals(KomaConst.komaTo2)) { line += "p+"; } else if (masu.komaName.Equals(KomaConst.komaNy2)) { line += "l+"; } else if (masu.komaName.Equals(KomaConst.komaNk2)) { line += "n+"; } else if (masu.komaName.Equals(KomaConst.komaNg2)) { line += "s+"; } else if (masu.komaName.Equals(KomaConst.komaUm2)) { line += "b+"; } else if (masu.komaName.Equals(KomaConst.komaRy2)) { line += "r+"; } else if (!masu.exists) { emptyCnt++; } } if (emptyCnt > 0) { line += emptyCnt; emptyCnt = 0; } if (y < 9) { line += "/"; } } MotigomaManager manager = MotigomaManager.Instance; string motigoma = manager.GetSfen(); return("sfen " + line + " w " + motigoma + " 1"); }
// 敵駒再描画 void RefreshKoma2() { RefreshInit2(); MotigomaManager manager = MotigomaManager.Instance; string[] komaNames = { KomaConst.komaOu2, KomaConst.komaHi2, KomaConst.komaKa2, KomaConst.komaKi2, KomaConst.komaGi2, KomaConst.komaKe2, KomaConst.komaKy2, KomaConst.komaFu2 }; int i = 0; foreach (string komaName in komaNames) { if (komaName.Equals(KomaConst.komaOu2) && manager.ou2 >= 1) { createKomaObj(KomaConst.komaOu2, i, manager.ou2); i++; } else if (komaName.Equals(KomaConst.komaHi2) && manager.hi2 >= 1) { createKomaObj(KomaConst.komaHi2, i, manager.hi2); i++; } else if (komaName.Equals(KomaConst.komaKa2) && manager.ka2 >= 1) { createKomaObj(KomaConst.komaKa2, i, manager.ka2); i++; } else if (komaName.Equals(KomaConst.komaKi2) && manager.ki2 >= 1) { createKomaObj(KomaConst.komaKi2, i, manager.ki2); i++; } else if (komaName.Equals(KomaConst.komaGi2) && manager.gi2 >= 1) { createKomaObj(KomaConst.komaGi2, i, manager.gi2); i++; } else if (komaName.Equals(KomaConst.komaKe2) && manager.ke2 >= 1) { createKomaObj(KomaConst.komaKe2, i, manager.ke2); i++; } else if (komaName.Equals(KomaConst.komaKy2) && manager.ky2 >= 1) { createKomaObj(KomaConst.komaKy2, i, manager.ky2); i++; } else if (komaName.Equals(KomaConst.komaFu2) && manager.fu2 >= 1) { createKomaObj(KomaConst.komaFu2, i, manager.fu2); i++; } } }