如何让我的游戏在libgdx中停止十秒后停止?

时间:2015-02-22 19:16:34

标签: java android timer libgdx

我几乎完成了我的项目,制作了一个非常简单的游戏。游戏的目的是计算用户触摸屏幕的次数,并将其与屏幕上弹出的对象进行比较的次数进行比较。如果触摸次数=对象数量,则认为它是赢家。所有这一切都发生在10秒内,我不知道从哪里开始如何计时游戏? (它应该是一个非常简单的游戏,只是为了学习如何使用libgdx)

截至目前,有一个开始屏幕,用户触摸开始,然后游戏开始,弹出的对象被触摸。问题是它现在基本上是一个无穷无尽的游戏...这就是我如何制作一个对象"随机弹出":

if (Gdx.input.isTouched()) {
            touchCount++;
            Vector3 touchPos = new Vector3();
            touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
            camera.unproject(touchPos);
            visual.x = MathUtils.random(10, 700);
            visual.y = MathUtils.random(100, 400);

        }

我是否必须在代码的这一部分中加入一些内置的定时器功能?如何跟踪触摸以与弹出的对象数量进行比较?

谢谢,任何建议都将非常感谢!

3 个答案:

答案 0 :(得分:1)

System.currentTimeMillis()以毫秒为单位为您提供当前时间

例如,你可以做这样的事情

private long time;

    public void show(){
    //...
            time = System.currentTimeMillis();

    }
    public void draw(){
    //...
           if(System.currentTimeMillis()>time+10000){
                System.out.println("after 10 seconds");
            }
    }

答案 1 :(得分:1)

您可以使用旧式的Java方式:

Timer timer = new java.util.Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                // Pause your game or just close it...
                Gdx.app.exit();
            }
        }, 10000L);

当然最好使用同步定时器方法,但对于快速调配或原型设计需要它有时更方便。

答案 2 :(得分:0)

使用 render()方法中的 delta 值。

render(float delta){
      //  ......

    if (yeni_oyun_mesaji_var_MI)// a boolean value to increment my time value only it is needed.
        oyun_uyari_zamani_tutucu += delta;

    if (oyun_uyari_zamani_tutucu > oyun_uyari_zaman_siniri) {// after some time (**oyun_uyari_zaman_siniri**) do what you need
        oyun_uyari_zamani_tutucu = 0f;
        oyun_durum_mesaji_str = "";
        yeni_oyun_mesaji_var_MI = false;
        Gdx.app.log(TAG, "Uyarı Kapatıldı!");
    }
}