android if语句的算法帮助

时间:2013-12-19 02:16:46

标签: java android algorithm if-statement

所以我使用了一个断点,但是断点从来没有碰到那里的if语句用于测试目的

基本上我要做的是当powerupStart == 1500时有一个上电负载; (它设置为500用于测试目的),它做得很好。现在我希望它在400内没有发生冲突时消失,而且正在使用的变量是powerupTimeOut; powerupTimeOut应该在powerupStart = 1500时递增; (或者在500以下的代码中进行测试)但是powerupTimeOut没有增加,我无法弄清楚为什么因为它在powerupStart增加的同一个地方,并且工作得很好。

游戏代码

    public void update() {
        score++;
        powerupStart++;


        if (powerupStart == 500) {
        loadme();

        powerupTimeOut++;
    }
    if (powerupStart == 510) {
                   //this is where my breakpoint is for testing
                   //even without this it doesnt work
    }
    if (powerupStart > 499) {
    Log.d("powerupStart", "Powerup Start == 1000");

        powerup.setAlive(true);
        powerup.setCollidable(true);
        powerupTimeOut =0;
        powerupTimeOut++;
    }


            if (powerupTimeOut == 400) {

                powerup.setAlive(false);
                powerupTimeOut = 0;
                powerupStart = 0;

            }



    int inputs = getTouchInputs();
    if (inputs > 0) {
        touch = getTouchPoint(0);
        if (touch.y > getScreenHeight() - 50000) {
            square.position.x = touch.x - square.getWidth();
            square.position.y = touch.y - square.getHeight();
         }

       }
    } 




    //load me class
    public void loadme() {
     int w = getScreenWidth();
     int h = getScreenHeight();
     powerup = new Sprite(this);
     if (!powerup.getTexture().loadFromAsset("triangle.png")) {
         fatalError("Error loading da triangle son");
     }
     powerup.position = new Float2(10, h-10);
     powerup.setVelocity(new Float2(6.0f, -6.0f));

     //keep powerup inside secreen boundary
     Point size5 = powerup.getSize();
     powerup.addAnimation(new ReboundBehavior(new RectF
         (0 , 0 , w-size5.x, h-size5.y),size5,powerup.getVelocity()) );

         powerup.setCollidable(false);
     powerup.setIdentifier(POWERUPID);
         addToGroup(powerup);
             powerup.setAlive(false);


       }

2 个答案:

答案 0 :(得分:1)

如果那个完全你的代码的方式可能是因为没有触发中断,因为没有任何值得破解的东西。 IOW,无论是真是假,无论如何都不会发生,重要的是什么?此...

int p = 10;
if(p == 10) { // Breakpoint set on the if
    System.out.println("Hello");
}

将触发断点。此...

int p = 10;
if(p == 10) { // Breakpoint set on the if
    // System.out.println("Hello");
}

不会出现在Elipse Kepler中。

如果有一些特别有趣的东西,你可以启用断言检查java -ea并使用assert powerupStart == 510 : "Your message";。如果没有,它将在声明中断,并抛出AssertionError,并报告“您的消息”。它尽管结束执行......

int p = 9;
assert p == 10 : "P isn't 10";
System.out.println("Hello");

我得到了休息和异常,但没有Hello。

答案 1 :(得分:1)

    powerupTimeOut =0;
    powerupTimeOut++;

此代码将powerupTimeOut设置为0,然后将其递增1.您只会看到powerupTimeOut设置为1。

删除powerupTimeOut = 0;

关于你的断点;把东西放在那里打破! System.out.println();不会对其他任何内容产生任何负面影响,您将触发断点。