Beispiel #1
0
 private void moveUnder(ref CurrentBlock tmp)
 {
     tmp = current.Fall();
     while (true)
     {
         if (!field.AreWallOrFix(tmp.MovePosition()))
         {
             current = tmp;
             tmp     = current.Fall();
         }
         else
         {
             tmp = current;
             return;
         }
     }
 }
Beispiel #2
0
    void Update()
    {
        time += Time.deltaTime;
        if (time < 3)
        {
            return;
        }

        if (finish)
        {
            return;
        }
        if (Input.GetKeyDown(KeyCode.P))
        {
            Debug.Log(field.GetPoint());
        }
        // if(Application.isEditor){
        //     inputButton(ref tmp);
        // }else{
        inputTouch(ref tmp);
        // }
        updateUi();

        wait_time++;
        if (wait_time < Setting.Time)
        {
            return;
        }
        else
        {
            wait_time = 0;
        }

        if (field.IsFinishGame())
        {
            Debug.Log("finish");
            end(true);
        }

        int[][] next_pos = tmp.MovePosition();

        if (!field.AreWallOrFix(next_pos))
        {
            field.PreFix(next_pos);
            current = tmp;
        }
        else
        {
            if (!button_on)
            {
                field.Fix(current.MovePosition());
                current  = new CurrentBlock(5, 0);
                next_pos = current.MovePosition();
                if (field.AreWallOrFix(next_pos))
                {
                    Debug.Log("game over");
                    end(false);
                }
            }
        }

        initSetting();

        updateField(field.GetFields(), field_blocks);
        field.Reflash();
        field.DeleteCompleteLine();
    }