示例#1
0
    //ブロックを消す
    void DeleteBlocks()
    {
        Debug.Log("ブロックを消してもいいか" + isDeleteBlock);
        ResultState();
        //falseなら早期リターン
        if (!isDeleteBlock)
        {
            return;
        }
        if (!WaitRemoveBlock())
        {
            return;                      //上昇中のものがいたらreturn
        }
        gameManager.ZeroOrCube();        //自分がゼロじゃなくてspaceでもwallでもない場合   ゼロ以外デスにする
        //消されたものがあるならスコア加算して
        if (gameManager.IsDeath())
        {
            conbo.RemoveCubeCount();     //消された数を計算して、スコアに加算
            if (conbo.GetIsConbo())      //コンボしてたら加算・してなかったら0に戻す
            {
                nowConbo++;
            }
            else
            {
                nowConbo = 0;
            }
            conbo.SetFalseIsConbo();     //コンボを確認したらfalseにする

            if (gameManager.moveOk)
            {
                gameManager.ZeroDesthChangeSpace();
            }
        }
        else
        {
            isDeleteBlock = false;       //場に0か死んでいるブロックがないならfalseに変更する
            for (int i = 0; i < gameManager.useObjects.Count; i++)
            {
                if (gameManager.useObjects[i].GetComponent <RealTimeBlock>().currentState == CurrentState.SelfReady ||
                    gameManager.useObjects[i].GetComponent <RealTimeBlock>().currentState == CurrentState.SelfZero)
                {
                    return;
                }
                gameManager.useObjects[i].GetComponent <RealTimeBlock>().currentState = CurrentState.Down;
            }
        }
    }
示例#2
0
    //ターンの全体管理
    void TurnManager()
    {
        switch (nowTurn)
        {
        case Turn.Thinking:                   //選ばれたら切り替える
            break;

        case Turn.PutIn:                      //選ばれたら落とす
            for (int j = 0; j < gameManager.useObjects.Count; j++)
            {
                //  一個でも落ちている奴がいれば
                if (gameManager.useObjects[j].GetComponent <Block>().currentState == CurrentState.Down)
                {
                    text.text = "現在のターン:" + nowTurn;
                    return;
                }
            }

            turnManager.CountDown(gameManager.useObjects);
            int putCount = 0;
            for (int i = 0; i < gameManager.useObjects.Count; i++)
            {
                //一個でもゼロブロックがあるなら
                if (gameManager.useObjects[i].GetComponent <Block>().CheckFryCount())
                {
                    ChangeTurn(Turn.Results);
                }
                else
                {
                    putCount++;
                }
            }
            //カウントが0のブロックがなかった場合
            if (putCount == gameManager.useObjects.Count)
            {
                nowConbo = 0;    //0に戻す
                //戻す
                ChangeTurn(Turn.Thinking);
            }
            break;

        case Turn.Results:
            int resCount = 0;

            if (l.Count <= gameManager.useObjects.Count)
            {
                for (int c = 0; c < gameManager.useObjects.Count; c++)
                {
                    if (gameManager.useObjects[c].GetComponent <Block>().currentState == CurrentState.SelfReady ||
                        gameManager.useObjects[c].GetComponent <Block>().currentState == CurrentState.SelfZero)
                    {
                        l.Add(gameManager.useObjects[c]);
                    }
                }
            }
            for (int i = 0; i < l.Count; i++)
            {
                //止まっていたら
                if (l[i].GetComponent <Block>().currentState == CurrentState.UpStop)
                {
                    resCount++;
                }
            }
            if (resCount == l.Count && resCount != 0)
            {
                l = new List <GameObject>();
                ChangeTurn(Turn.Delete);
            }
            break;

        case Turn.OutOil:
            #region O
            //if (gameManager.InArrayZero())
            //{
            //    for (int i = 0; i < gameManager.useObjects.Count; i++)
            //    {
            //        if (gameManager.useObjects[i].GetComponent<Block>().DownZeroBlock() &&
            //            !gameManager.useObjects[i].GetComponent<Block>().CheckFryCount())
            //        {
            //            Debug.Log(gameManager.useObjects[i].name);
            //            gameManager.useObjects[i].GetComponent<Block>().PositionUp();
            //        }
            //    }
            //}
            #endregion
            break;

        case Turn.Delete:
            #region D
            //if (gameManager.InArrayZero())
            //{
            //    for (int i = 0; i < gameManager.useObjects.Count; i++)
            //    {
            //        if (gameManager.useObjects[i].GetComponent<Block>().DownZeroBlock())
            //        {
            //            gameManager.useObjects[i].GetComponent<Block>().PositionUp();
            //        }
            //    }
            //}
            #endregion


            //ゼロがなかった場合
            gameManager.ZeroOrCube();

            //if (!gameManager.IsZero())
            //{
            //    ChangeTurn(Turn.Deleting);
            //}
            if (gameManager.IsDeath())
            {
                conbo.RemoveCubeCount();      //消された数を計算して、スコアに加算
                if (conbo.GetIsConbo())       //コンボしてたら加算・してなかったら0に戻す
                {
                    nowConbo++;
                }
                else
                {
                    nowConbo = 0;
                }
                conbo.SetFalseIsConbo();      //コンボを確認したらfalseにする
                ChangeTurn(Turn.Deleting);
            }
            break;

        case Turn.Deleting:
            if (!gameManager.IsDeath())
            {
                for (int i = 0; i < gameManager.useObjects.Count; i++)
                {
                    gameManager.useObjects[i].GetComponent <Block>().currentState = CurrentState.Down;
                }
                ChangeTurn(Turn.Form);
            }
            if (gameManager.moveOk)
            {
                gameManager.ZeroDesthChangeSpace();
            }
            break;

        //形を判定
        case Turn.Form:
            int forCount = 0;
            for (int i = 0; i < gameManager.useObjects.Count; i++)
            {
                //止まっていたら
                if (gameManager.useObjects[i].GetComponent <Block>().currentState == CurrentState.DownStop)
                {
                    forCount++;
                }
            }
            if (forCount == gameManager.useObjects.Count)
            {
                //最初に戻る
                ChangeTurn(Turn.Thinking);
            }
            break;

        case Turn.Clear:
            //終了
            break;

        default:
            break;
        }
        text.text = "現在のターン:" + nowTurn;
    }