Exemplo n.º 1
0
    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を呼び出す
        }
        //*/
    }
Exemplo n.º 2
0
    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);
        }
    }