void Update() { //Debug.Log("log0"); if (ClickMousePos.Down == true)//クリックしたら { //Debug.Log("log1"); try { //Debug.Log("log2"); //Debug.Log(ClickMousePos.posx + " " + ClickMousePos.posy); if (Coin[ClickMousePos.posx, ClickMousePos.posy].GetSet() == false)//コインがまだ置かれていない { //Debug.Log("log3"); if (point[ClickMousePos.posx, ClickMousePos.posy] == true)//コインが設置可能マスである。(ガイドが表示されている) { //Debug.Log("log4"); Debug.Log("r = " + Coin[ClickMousePos.posx, ClickMousePos.posy].GetR()); Debug.Log("Surrounding = " + Coin[ClickMousePos.posx, ClickMousePos.posy].GetSurrounding()); if (SCB.GetSCSW()) { Coin[ClickMousePos.posx, ClickMousePos.posy].ONSC(); //特殊コインを設置 SCB.ONSW(); //特殊コインを封印 } //Debug.Log("log5"); Coin[ClickMousePos.posx, ClickMousePos.posy].SetCoin(T.turn); //コインを生成 audioSource.Play(); CC.Change(ClickMousePos.posx, ClickMousePos.posy); //コインをひっくり返す T.CS(); //この時点でターンが切り替わる //Debug.Log("log6"); GP.Gaid(false); //ここでターンを呼べば次のターンが取れる falseで白 //ついでに勝敗の判定も行っている ClickMousePos.Down = false; //Debug.Log("log7"); } else { Debug.Log("そこは置けないよ"); ClickMousePos.Down = false; } } else { Debug.Log("もう置いてあるよ!!"); ClickMousePos.Down = false; } } catch (System.NullReferenceException) { Debug.Log("そこは押せないよ!!"); ClickMousePos.Down = false; } catch (System.IndexOutOfRangeException) { Debug.Log("そこは押す場所じゃないよ!!"); ClickMousePos.Down = false; } } ///* if (T.turn == false)//もし白のターンだったら { Debug.Log("\n----AI呼び出し----\n"); GA.MainAI();//ゲームAIを呼び出す } //*/ }
public void Gaid(bool p)//この中でのみ配列参照が出来ていない { RisetPoint(); pass = true; //Debug.Log(T.turn); for (int i = 0; i < 8; i++) { for (int l = 0; l < 8; l++) { r = 0; //めくれるコインの枚数 Surrounding = 0; //周囲にあるコインの枚数 if (Coin[i, l].GetSet() == false) //コインが設置されていなければ { Coin[i, l].Clear(); //コインが設置されていなければクリアを行う //12時方向から時計回りに G = false;//上 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i, l + lp].GetSet() == true && Coin[i, l + lp].GetFAB() != T.turn) //コインがある かつ 今とは反対の色である { G = true; //ガイド設置条件を満たしている } else if (Coin[i, l + lp].GetSet() == true && Coin[i, l + lp].GetFAB() == T.turn) //コインがある かつ 今と同じ色である { if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//右上 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i + lp, l + lp].GetSet() == true && Coin[i + lp, l + lp].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i + lp, l + lp].GetSet() == true && Coin[i + lp, l + lp].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//右 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i + lp, l].GetSet() == true && Coin[i + lp, l].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i + lp, l].GetSet() == true && Coin[i + lp, l].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//右下 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i + lp, l - lp].GetSet() == true && Coin[i + lp, l - lp].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i + lp, l - lp].GetSet() == true && Coin[i + lp, l - lp].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//下 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i, l - lp].GetSet() == true && Coin[i, l - lp].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i, l - lp].GetSet() == true && Coin[i, l - lp].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//左下 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i - lp, l - lp].GetSet() == true && Coin[i - lp, l - lp].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i - lp, l - lp].GetSet() == true && Coin[i - lp, l - lp].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//左 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i - lp, l].GetSet() == true && Coin[i - lp, l].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i - lp, l].GetSet() == true && Coin[i - lp, l].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } G = false;//左上 for (int lp = 1; lp < 8; lp++) { try { if (Coin[i - lp, l + lp].GetSet() == true && Coin[i - lp, l + lp].GetFAB() != T.turn) { //コインがある かつ 今とは反対の色である G = true; //ガイド設置条件を満たしている } else if (Coin[i - lp, l + lp].GetSet() == true && Coin[i - lp, l + lp].GetFAB() == T.turn) { //コインがある かつ 今と同じ色である if (G == true) //もしガイド設置条件を満たしているなら { Coin[i, l].SetGaid(); //ガイドを設置する point[i, l] = true; //ガイド座標をtrueに pass = false; r += (lp - 1); break; } break; } else { break; //何もないならとっととブレイク } } catch (System.IndexOutOfRangeException) { //Debug.Log("そこはお外ですよ"); break; } } } try { if (Coin[i, l + 1].GetSet()) { Surrounding++; } if (Coin[i + 1, l].GetSet()) { Surrounding++; } if (Coin[i, l - 1].GetSet()) { Surrounding++; } if (Coin[i - 1, l].GetSet()) { Surrounding++; } if (Coin[i + 1, l + 1].GetSet()) { Surrounding++; } if (Coin[i - 1, l - 1].GetSet()) { Surrounding++; } if (Coin[i + 1, l - 1].GetSet()) { Surrounding++; } if (Coin[i - 1, l + 1].GetSet()) { Surrounding++; } } catch (System.IndexOutOfRangeException) { } Coin[i, l].SetSurrounding(Surrounding); Coin[i, l].SetR(r); } } if (pass == true) //恐らく無限ループの元凶 { if (p == true) //一回パスしてまたパスしていた場合 つまり置けるところが双方ない場合 { R.GameSet(); //リザルト処理を行う Debug.Log("どちらも設置できません"); return; } Debug.Log("Passが発生しました"); T.CS(); Gaid(true); } }