繁体   English   中英

如何让某事在一定时间内执行

[英]How to make something execute for a certain amount of time

这是我正在制作的太空侵略者游戏。 这段代码处理与物品和射手的碰撞。 在游戏开始时,射手最多可以射击 3 次,当射手收集物品时,最多可以射击 10 次,持续 3 秒。 我尝试使用 for 循环,但它永远不会恢复到最大大小 3

没有 for 循环

//items vs shooter
var removeItems = new ArrayList<>();
for(var blocks: shooter.getComponents()){
    for(var i: items){
        if(blocks.collideWith(i)){
            removeItems.add(i);
            shooter.setMAX_BULLETS(10);
        }
    }
}
items.removeAll(removeItems);

带for循环

var removeItems = new ArrayList<>();
for(var blocks: shooter.getComponents()){
    for(var i: items){
        if(blocks.collideWith(i)){
            removeItems.add(i);
            for(int j =0; j<3;j++){
                shooter.setMAX_BULLETS(10);
            }
        }
    }
}
items.removeAll(removeItems);

您没有在任何地方将最大子弹数设置回 3。 在 for 循环之后添加shooter.setMAX_BULLETS(3)

for(int j =0; j<3;j++){
    shooter.setMAX_BULLETS(10);
}
shooter.setMAX_BULLETS(3);

我得到了我的问题的答案

Thread shootThread = new Thread() {
                        @Override
                        public void run() {
                            shooter.setMAX_BULLETS(10);
                            try {
                                Thread.sleep(3000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            shooter.setMAX_BULLETS(3);
                        }
                    };
                    shootThread.start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM