如何响应从堆栈中获取的特定数字

时间:2014-12-18 15:12:31

标签: java android stack andengine

我正在开发一款使用AndEngine的游戏,该游戏基于特定组合中的怪物攻击。我从1到4生成随机数,然后我将它们保存到堆栈。然后我为每个精灵使用onAreaTouched方法,我也有一些if-else语句,但这似乎不起作用。我可以按照我想要的时间点击怪物,即使它不在堆叠中,我仍然可以获得分数。请帮忙。

以下是精灵反应的代码:

    Monster monsterTopLeft = new Monster(1, 100, 225, this.mMonsterTopLeft,       getVertexBufferObjectManager()) {
        @Override
        public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
            switch (pSceneTouchEvent.getAction()) {
                case TouchEvent.ACTION_DOWN:

                    break;
                case TouchEvent.ACTION_UP:
                    if (mStack.isEmpty() || (mStack.peek().toString() != "1")){
                        break;


                    }

                    if (!mStack.isEmpty()&&mStack.peek().toString().equals("1")){
                        mReverseStack.push(mStack.pop());
                        score = score + 1;
                        mText.setText(String.valueOf(score));
                        if(mStack.isEmpty()){
                            cislo = generateNumber();
                            reverseNumbersInStack1();
                            mReverseStack.push(new Integer(cislo));
                            reverseNumbersInStack2();
                        }
                    }

                    break;
            }
            return true;
        }

这是我用来在OnCreateScene中生成数字的代码:

    scene.attachChild(monsterTopLeft);
    scene.attachChild(monsterTopRight);
    scene.attachChild(monsterBottomLeft);
    scene.attachChild(monsterBottomRight);
    scene.registerTouchArea(monsterTopLeft);
    scene.registerTouchArea(monsterTopRight);
    scene.registerTouchArea(monsterBottomLeft);
    scene.registerTouchArea(monsterBottomRight);
    scene.setTouchAreaBindingOnActionDownEnabled(true);
    scene.registerUpdateHandler(new IUpdateHandler() {
        @Override
        public void onUpdate(float pSecondsElapsed) {
            cislo=generateNumber();
            mStack.push(new Integer(cislo));
            scene.unregisterUpdateHandler(scene);
        }

        @Override
        public void reset() {

        }
    });
    return scene;
}

public int generateNumber() {
    Random r = new Random();
    return r.nextInt(4 - 1) + 1;
}

public void reverseNumbersInStack1() {
    int i;
    for (i = mStack.size(); mStack.isEmpty(); ) {
        mReverseStack.push(mStack.pop());
    }
}

public void reverseNumbersInStack2() {
    int i;
    for (i = mReverseStack.size(); mReverseStack.isEmpty(); ) {
        mStack.push(mReverseStack.pop());
    }
}

}

0 个答案:

没有答案