Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java can';我的嵌套循环无法在游戏中工作_Java_Loops - Fatal编程技术网

Java can';我的嵌套循环无法在游戏中工作

Java can';我的嵌套循环无法在游戏中工作,java,loops,Java,Loops,我正在做一个游戏,我需要和我的球员关上一扇门。当他接近时,他有一个接近的动画。在我当前的循环中,检查每个房间的每个门。只有当有一扇门且该门位于环路中的第一个房间时,该代码才起作用。如果不是,则“关闭”动画仅为一帧触发,然后返回到空闲状态,因此在关闭时,它在两帧之间闪烁 for (Room r : rooms) { for (Door d : Doors) { if (r.closed(d)) { close(); d.closing=fal

我正在做一个游戏,我需要和我的球员关上一扇门。当他接近时,他有一个接近的动画。在我当前的循环中,检查每个房间的每个门。只有当有一扇门且该门位于环路中的第一个房间时,该代码才起作用。如果不是,则“关闭”动画仅为一帧触发,然后返回到空闲状态,因此在关闭时,它在两帧之间闪烁

for (Room r : rooms) {
   for  (Door d : Doors) {
      if (r.closed(d)) {
         close();
         d.closing=false;
         break;
      } else {
         d.closing=true;
         r.closed=false;
         r.locked=false;
      }
   }
}
  

代码中的这两行最有可能导致问题:

    player.isPushingRight=false;
    player.isPushingLeft=false;
当有物体开始下落时,执行这些操作。通常情况下,这个秋天是由玩家发起的,所以在这里可能会有一些意义,尽管可能会有一个更适合这些台词的地方

真正的问题是如何确定物体是否开始下落:你检查每个平台,一旦你找到一个没有物体停留的平台,你就让物体开始下落。如果以后找到对象所在的平台,则取消坠落,但播放器动画已停止

void objGround(ArrayList<Platform> platforms, ArrayList<Pushable> pushObj) {// to see if the object is standing on a platform.



for (Pushable pu : pushObj) {
    pu.render();
    let isOnGround = false;
    for  (Platform plt : platforms) {
      if (pu.objectOnGround(plt)) {
        pu.moveY=0;
        pu.falling=false; 
        if (pu.y>pu.startingY+20) {
          pu.smashed=true;
        }
        isOnGround = true;
        break;
      }
    }

    if (!isOnGround && !pu.falling) {
      pu.falling=true;
      pu.moveY=2;
      pu.startingY=pu.y; // Guess you need that too
      player.isPushingRight=false;  // only valid if the player is the only cause of a falling object!
      player.isPushingLeft=false;  // only valid if the player is the only cause of a falling object!
    }
  }
} // end of objground procedure
void objGround(ArrayList platforms,ArrayList pushObj){//查看对象是否站在平台上。
用于(可推式pu:pushObj){
pu.render();
让isOnGround=false;
用于(平台plt:平台){
if(pu.objectOnGround(plt)){
pu.moveY=0;
pu.下降=错误;
如果(pu.y>pu.startingY+20){
pu.splasted=true;
}
isOnGround=true;
打破
}
}
如果(!isOnGround&&!pu.falling){
pu.下降=正确;
pu.moveY=2;
pu.startingY=pu.y;//我想你也需要这个
player.isPushingRight=false;//仅当该播放器是坠落物体的唯一原因时才有效!
player.isPushingLeft=false;//仅当该播放器是坠落物体的唯一原因时才有效!
}
}
}//objground过程结束