0
public void boss(final Boss boss) {
    forward.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            boss.setHp(boss.getHp() - 1);
            log("" + boss.getHp());
        }
    });
    if(boss.getHp() > 0){
        boss(boss);
    }
}

したがって、上記のコードでは、進むをクリックするたびに BossHp を 1 減らすようにしています。コードにスタックオーバーフロー エラーがあります。(無限ループで Boss() を呼び出すだけです。) ユーザーが前方をクリックするたびに BossHp を 1 減らし続け、bossHp <= 0 のときに停止するにはどうすればよいですか?

注: 進むボタンは他の場所でも使用されます。

ありがとう!

編集:以前のタイプミスでごめんなさい!表示されているコードが正しいコードになりました。何か案は?ありがとう!

説明:

私がしたいことは、BossHp <= 0までボタンフォワードがクリックされるたびにbossHpをチェックすることです。その時点でメソッドを終了したいのですが、それ以前ではありません

4

1 に答える 1

0

これはうまくいくはずです。また、boss を関数パラメーターとして渡す必要はありません。そのオブジェクトをクラスのフィールドとして保持できます。

public void boss(final Boss boss) {
    forward.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if(boss.getHp() > 0){
                boss.setHp(boss.getHp() - 1);
                log("" + boss.getHp());
            } else {
                //boss is dead
            }
        }
    });
}
于 2013-05-21T07:57:11.930 に答える