我如何组织这个功能,所以它按照我的意图工作

时间:2017-01-24 21:28:12

标签: java android loops

我对Android工作室很新,我希望这个函数循环并创建一个无限的球落循环,它将被评分直到两个整数不匹配但是当我尝试运行它时,它只会循环一次,如果我改变应用程序崩溃的streak = 2语句中的else

public void mainGameLoop(){
    do {
        //sets Balls integer
        setColourint();
        ball.setVisibility(View.VISIBLE);
        //ball fall
        float bottomOfScreen = getResources().getDisplayMetrics()
                .heightPixels - (ball.getHeight() * 4);

        //fall animation
        ball.animate()
                .translationY(bottomOfScreen)
                .setInterpolator(new AccelerateInterpolator())
                .setInterpolator(new BounceInterpolator())
                .setDuration(9000);
        //once animation is complete compares balls variable with current variable
        if (colourint == ranint){
            //if they are same then +1 score
            score = score+1;
            scr.setText(Integer.parseInt(String.valueOf(score)));

        } else {
            //else game is over
             streak = 2;
        }
        //repeat until game is over
    } while (streak == 1);
}

一旦球到达相对布局的底部,我希望函数检查setcoulour intran int是否相同然后如果是score = score + 1,则球返回在顶部,setColourInt函数被调用并且球再次落下(等等)但是如果不是循环结束并且它的游戏结束......我为我明显无能而道歉但我无法想象你们不记得你们什么时候,这对于编码是否天真。非常感谢汤姆

1 个答案:

答案 0 :(得分:0)

您必须让UI有机会绘制您正在做的事情。您对其进行编码的方式,无论哪种方法(onStartonCreate等)调用您的mainGameLoop都将永远不会返回,因为它会陷入无限循环。这是一个错误。

执行此操作的一种方法是创建View并使用onDraw方法实现游戏绘制逻辑。 UI线程将在绘制时调用您的onDraw方法。这是一篇讨论这种方法的文章:http://cjds.github.io/2014/04/28/Creating-a-simple-android-game/