【问题标题】:How to make something execute for a certain amount of time如何让某事在一定时间内执行
【发布时间】:2020-12-04 20:22:50
【问题描述】:

这是我正在制作的太空入侵者游戏。这段代码处理与物品和射手的碰撞。在游戏开始时,射手最多可以射击 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);

【问题讨论】:

    标签: java oop time


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我的问题得到了答案

      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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 2013-01-17
        • 2019-04-21
        • 2021-12-18
        相关资源
        最近更新 更多