public void SetMasu(int x, int y, string name) { if (x > 9 || y > 9 || x < 1 || y < 1) { return; } string[] names = name.Split(new char[] { '_' }); MasuInit masu = new MasuInit(); masu.x = x; masu.y = y; masu.komaName = name; masu.exists = true; if (int.Parse(names[1]) >= 15) { masu.selfFlag = false; masu.enemyFlag = true; } else { masu.selfFlag = true; masu.enemyFlag = false; } komas [x + "-" + y] = masu; }
/** * P1-KY-KE-GI-KI-OU-KI-GI-KE-KY * P2 * -HI * * * * * -KA * * P3-FU-FU-FU-FU-FU-FU-FU-FU-FU * P4 * * * * * * * * * * P5 * * * * * * * * * * P6 * * * * * * * * * * P7+FU+FU+FU+FU+FU+FU+FU+FU+FU * P8 * +KA * * * * * +HI * * P9+KY+KE+GI+KI+OU+KI+GI+KE+KY */ public string GetMasuStr() { string line = ""; for (int y = 1; y <= 9; y++) { line += "P" + y; for (int x = 9; x >= 1; x--) { MasuInit masu = komas [x + "-" + y]; if (masu.selfFlag) { line += "+"; } else if (masu.enemyFlag) { line += "-"; } else { line += " "; } if (masu.komaName != "") { line += KomaConst.GetKomaName(masu.komaName).Substring(0, 2).ToUpper() + ""; } else { line += "* "; } } line += "\n"; } return(line); }
public void SetKoma(int x, int y, string objName) { string[] names = objName.Split(new char[] { '_' }); string name = "yose5p_" + names[1]; MasuInit detail = new MasuInit(); detail.x = x; detail.y = y; detail.komaName = name; detail.objName = objName; detail.exists = true; if (int.Parse(names[4]) == 0) { detail.selfFlag = true; detail.enemyFlag = false; /* * detail.selfFlag = false; * detail.enemyFlag = true; */ } else { detail.selfFlag = false; detail.enemyFlag = true; /* * detail.selfFlag = true; * detail.enemyFlag = false; */ } }
public List <KomaMove> GetMotigomaMoves(KomaScript sc) { List <KomaMove> moves = new List <KomaMove> (); MasuManager manager = MasuManager.Instance; for (int x = 1; x <= 9; x++) { for (int y = 1; y <= 9; y++) { MasuInit masu = manager.GetMasu(x, y); // 敵味方の駒がいないとき if (!masu.exists) { KomaMove move = new KomaMove(); move.x = x; move.y = y; moves.Add(move); } else { continue; } } } return(moves); }
public List <KomaMove> GetMoves(KomaScript sc, bool reverse = false) { int reversenum = 1; if (reverse) { reversenum = -1; } List <KomaMove> moves = new List <KomaMove>(); MasuManager manager = MasuManager.Instance; int[] xs = { 0, -1, -1, 0, 1, 1 }; int[] ys = { 1, 0, -1, -1, -1, 0 }; int i = 0; foreach (int x in xs) { int y = ys [i]; MasuInit masu = manager.GetMasu(sc.x + x, sc.y + y * reversenum); if (masu.selfFlag != sc.selfFlag || masu.enemyFlag != sc.enemyFlag) { KomaMove move = new KomaMove(); move.x = x; move.y = y * reversenum; moves.Add(move); } i++; } return(moves); }
public List <KomaMove> GetMotigomaMoves(KomaScript sc, bool reverse = false) { List <KomaMove> moves = new List <KomaMove> (); MasuManager manager = MasuManager.Instance; int ymin = 1; int ymax = 9; if (reverse) { ymax = 8; } else { ymin = 2; } for (int x = 1; x <= 9; x++) { bool nifuFlag = false; for (int y = ymin; y <= ymax; y++) { MasuInit masu = manager.GetMasu(x, y); // 味方側 if (!reverse && masu.komaName.Equals(KomaConst.komaFu)) { nifuFlag = true; break; // 敵側 } else if (reverse && masu.komaName.Equals(KomaConst.komaFu2)) { nifuFlag = true; break; } } if (!nifuFlag) { for (int y = ymin; y <= ymax; y++) { MasuInit masu = manager.GetMasu(x, y); // 敵味方の駒がいないとき if (!masu.exists) { KomaMove move = new KomaMove(); move.x = x; move.y = y; moves.Add(move); } else { continue; } } } } return(moves); }
public MasuInit GetMasu(int x, int y) { if (x > 9 || y > 9 || x < 1 || y < 1) { MasuInit masu = new MasuInit(); masu.Init(0, 0); return(masu); } return(komas [x + "-" + y]); }
public void UpdMasuObjNameByXAndY(string objName, int x, int y) { if (x > 9 || y > 9 || x < 1 || y < 1) { return; } MasuInit masu = GetMasu(x, y); masu.objName = objName; komas [x + "-" + y] = masu; }
// マスを空に public void EmptyMasu(int x, int y) { if (x > 9 || y > 9 || x < 1 || y < 1) { return; } MasuInit masu = new MasuInit(); masu.Init(x, y); komas [x + "-" + y] = masu; }
public void Init() { for (int x = 1; x <= 9; x++) { for (int y = 1; y <= 9; y++) { MasuInit masu = new MasuInit(); masu.Init(x, y); komas [x + "-" + y] = masu; } } }
public void EmptyKoma() { MasuManager manager = MasuManager.Instance; for (int y = 1; y <= 9; y++) { for (int x = 1; x <= 9; x++) { MasuInit masu = manager.GetMasu(x, y); if (masu.exists) { DestroyKomaObj(masu.objName); } } } }
public void RefreshKoma() { MasuManager manager = MasuManager.Instance; for (int y = 1; y <= 9; y++) { for (int x = 1; x <= 9; x++) { MasuInit masu = manager.GetMasu(x, y); if (masu.exists) { string objName = CreateKomaObj(masu.komaName, x, y); manager.UpdMasuObjNameByXAndY(objName, x, y); } } } }
public string GetMasuDetail() { string line = ""; for (int y = 1; y <= 9; y++) { for (int x = 1; x <= 9; x++) { MasuInit masu = komas [x + "-" + y]; line += "(" + x + "-" + y + ")"; line += "selfFlag:" + masu.selfFlag + "\n"; line += "enemyFlag:" + masu.enemyFlag + "\n"; line += "exists:" + masu.exists + "\n"; line += "komaName:" + masu.komaName + "\n"; line += "objName:" + masu.objName + "\n"; } } return(line); }
public void SetKoma(int x, int y, string objName) { string[] names = objName.Split(new char[] { '_' }); string name = "koma_" + names [1]; MasuInit detail = new MasuInit(); this.x = x; this.y = y; this.komaName = name; this.objName = objName; if (int.Parse(names [1]) >= 15) { selfFlag = false; enemyFlag = true; } else { selfFlag = true; enemyFlag = false; } }
public List <KomaMove> GetMoves(KomaScript sc, bool reverse = false) { int reversenum = 1; if (reverse) { reversenum = -1; } List <KomaMove> moves = new List <KomaMove> (); MasuManager manager = MasuManager.Instance; for (int i = 1; i <= 8; i++) { MasuInit masu = manager.GetMasu(sc.x, sc.y + -1 * i * reversenum); // 敵の駒に当たったとき if (masu.enemyFlag && sc.selfFlag || masu.selfFlag && sc.enemyFlag) { KomaMove move = new KomaMove(); move.x = 0; move.y = -1 * i * reversenum; moves.Add(move); break; // 味方の駒に当たってないとき } else if (masu.selfFlag != sc.selfFlag || masu.enemyFlag != sc.enemyFlag) { KomaMove move = new KomaMove(); move.x = 0; move.y = -1 * i * reversenum; moves.Add(move); } else { break; } } return(moves); }
public List <KomaMove> GetMotigomaMoves(KomaScript sc, bool reverse = false) { List <KomaMove> moves = new List <KomaMove> (); MasuManager manager = MasuManager.Instance; int ymin = 1; int ymax = 9; if (reverse) { ymax = 7; } else { ymin = 3; } for (int x = 1; x <= 9; x++) { for (int y = ymin; y <= ymax; y++) { MasuInit masu = manager.GetMasu(x, y); // 敵味方の駒がいないとき if (!masu.exists) { KomaMove move = new KomaMove(); move.x = x; move.y = y; moves.Add(move); } else { continue; } } } return(moves); }
// 相手の駒を取ったか確認&実行時 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); } }
// 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"); }