В классе F250.java есть две петли, которые не будут работать -- java поле с участием arrays поле с участием for-loop поле с участием constructor поле с участием slick2d пол Связанный проблема

there are two loops in the F250.java Class that wont run


-2
vote

проблема

русский

Класс F250.java - это объект оружия, и есть два метода, которые привлекают и обновляют пули, выходящие из пистолета. Я сделал класс пули и сделал массив пули в классе F250.java, но для петлей в методе drawny and Update не выполнит код в циклах, чтобы сделать выпуску пули. Я считаю, что это есть что связано с классом пули, особенно с помощью этой переменной. Builletimage в конструкторе класса пули. В Slick2D изображения должны быть инициализированы, и я не могу получить изображение, которое я положил в качестве параметра, когда я делаю объект пули в классе F250.java, чтобы получить инициализировать в классе Bullet.java, потому что его не статичный или достойный IDK. Может быть, я не так и это не проблема, но если это так, я не знаю, как это исправить. Главное, что два для петель не будут выполняться в классе F250.java и спасибо за чтение всего этого и спасибо, кто с кем бы не ответил на этот вопрос, я действительно ценю, что вы получите время для меня и пройти через борьбу, чтобы решить эту утомительную проблему для я спасибо.

 <код> package Guns.Human; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask;  import org.lwjgl.input.Mouse; import org.newdawn.slick.Animation; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Image; import org.newdawn.slick.Input; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState; import org.newdawn.slick.state.StateBasedGame;  import Bullet.Bullet; import GUI.Clicker; import MOB.Player;     public class F250 {  static Clicker clicker = new Clicker();  //Gun Preferences static String gun = "F250";  //Images  static Image F250;  static Image fmjBullet;  //Image Coordinates  static int F250_X = Player.getX() + 0;  static int F250_Y = Player.getY() + 20;  static int bulletX = F250_X + 32;  static int bulletY = F250_Y;  //Animations  static Animation charIdleGun;  static Animation shootingGun;  //Animation Rates  private static int[] idle = {120,120,120};  private static int[] gunRecoil ={10,10};   //Booleans  private static boolean holding = true;  private static boolean gunIdle = true;  private static boolean shooting = false;   //Bullet Array Parameters private static Image yellowBulletImage;  private static int bulletStartX = F250_X; private static int bulletStartY = F250_Y; private static int destX = clicker.getMouseX(); private static int destY = clicker.getMouseY(); private static int bulletSpeed = 20; private static Bullet[] bullets = new Bullet[42]; private static Bullet bullet;        public static void init(GameContainer gc, StateBasedGame sbg) throws SlickException {       //Images     F250 = new Image("res/Images/Guns/Human/F250/Normal Gun/F250.png",false,F250.FILTER_NEAREST);      //bullet image     yellowBulletImage = new Image("res/Images/Guns/Human/F250/Bullets/bullet1.png",false,yellowBulletImage.FILTER_NEAREST);      //Bullet     bullet = new Bullet(gun,yellowBulletImage,bulletStartX,bulletStartY,destX,destY,bulletSpeed);        //Image Arrays     Image[] characterIdleGunPics = {new Image("res/Images/Guns/Human/F250/Animation/F250_1.png",false,F250.FILTER_NEAREST), new Image("res/Images/Guns/Human/F250/Animation/F250_2.png",false,F250.FILTER_NEAREST),new Image("res/Images/Guns/Human/F250/Animation/F250_2.png",false,F250.FILTER_NEAREST)};     Image[] shootingGunPics = {new Image("res/Images/Guns/Human/F250/Animation/F250_shot.png",false,F250.FILTER_NEAREST), new Image("res/Images/Guns/Human/F250/Animation/F250_1.png",false,F250.FILTER_NEAREST)};      //Animations     charIdleGun = new Animation(characterIdleGunPics,idle,false);     shootingGun = new Animation(shootingGunPics,gunRecoil,false);  }    public static void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {       Input input = gc.getInput();        //make inventory later and make holding this gun conditional if clicked on in the inventory       if(gunIdle == true){          charIdleGun.draw(F250_X,F250_Y,96,96);      }        if(input.isMouseButtonDown(0) == true){           shooting = true;         gunIdle = false;      }       if(input.isMouseButtonDown(0) == false){          shooting = false;         gunIdle = true;      }         if(shooting == true){          shootingGun.draw(F250_X,F250_Y,96,96);            Image gunShootingFrame = shootingGun.getImage(1);          if(gunShootingFrame != null){              //Rotates the gun towards the mouse  ---  while gun is Shooting              float distanceX = clicker.getMouseX() - F250_X;             float distanceY = clicker.getMouseY() - F250_Y;             float h = (float) Math.sqrt(distanceX * distanceX + distanceY * distanceY);             float dn = (float)(h / Math.sqrt(2));             System.out.println("in gunShootingFrame != null brace");                   double degrees = Math.toDegrees(Math.atan2(distanceX, distanceY));             float angle = (float) degrees;               //Draw the bullets (THIS LOOP WONT RUN)             for(int i = 42 ; i == 0; i = i - 1){                   bullets[i] = bullet;                  bullets[i].getImage().draw(bullet.getBulletX(),bullet.getBulletY(),64,64);                  bullets[i].getImage().setRotation(angle);                  System.out.print("Bullet: " + i + " rendered");              }            }      }    }    public static void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {      Input input = gc.getInput();          //Rotates the gun towards the mouse  ---  while gun is Idle     Image rotatedGunIdle1 = charIdleGun.getImage(0);     Image rotatedGunIdle2 = charIdleGun.getImage(1);     Image rotatedGunIdle3 = charIdleGun.getImage(2);      float xDistance = Clicker.getMouseX() - F250_X;     float yDistance = Clicker.getMouseY() - F250_Y;     double degrees = Math.toDegrees(Math.atan2(yDistance, xDistance));     float angle = (float) degrees;      rotatedGunIdle1.setRotation(angle);     rotatedGunIdle2.setRotation(angle);     rotatedGunIdle3.setRotation(angle);          //Rotates the gun towards the mouse  ---  while gun is Shooting     Image rotatedGunShooting1 = shootingGun.getImage(0);     Image rotatedGunShooting2 = shootingGun.getImage(1);       rotatedGunShooting1.setRotation(angle);     rotatedGunShooting2.setRotation(angle);        if(gunIdle == true){          charIdleGun.update(delta);         charIdleGun.setPingPong(true);      }       if(input.isMouseButtonDown(0) == true){          shooting = true;         gunIdle = false;      }       if(input.isMouseButtonDown(0) == false){          shooting = false;         gunIdle = true;      }        if(shooting == true){          shootingGun.update(delta);          //Update the bullet's position. (THIS LOOP WONT RUN)           for(int i = 42; i == 0; i = i - 1)           {               bullets[i] = bullet;              bullets[i].move();              bullets[i].getImage().draw(bullet.getBulletX(),bullet.getBulletY(),64,64);              bullets[i].getImage().setRotation(angle);              bullets[i].move();              System.out.print("Bullet: " + i + " updated");                //NOTE: Will need to determine if this hit something or went off the screen. Or otherwise, the list will get filled with invalid bullets.              //You'll have to add that yourself. Idiot.           }      }         }  public static boolean ifHolding(){        return holding;   }  public static int getRecoil(int index){      return gunRecoil[index];  }  }        package Bullet;  import org.newdawn.slick.GameContainer; import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; import org.newdawn.slick.geom.Point; import org.newdawn.slick.state.StateBasedGame;  public class Bullet {  String bulletImageURL = "res/Images/Guns/Human/F250/Bullets/bullet1.png"; String gun = "no gun written in parameters idiot"; private Image bulletImage; private int startX = 0; private int startY = 0; private int destX = 0; private int destY = 0; private Point location = new Point(0,0); private float speed = 50; //how fast this moves. ( By Default ) private float deg; private float dx; private float dy;  private int bulletX; private int bulletY;     public Bullet(String gun, Image bulletImage, int startX, int startY, int destX, int destY, int speed){     this.bulletImage = bulletImage;    this.gun = gun;    this.speed = speed;    this.startX = startX;    this.startY = startY;    location.setLocation(startX, startY);    this.destX = destX;    this.destY = destY;    recalculateVector(destX, destY);    System.out.println("The url for gun: " + gun + " is " + bulletImageURL);  }  /**  * Calculates a new vector based on the input destination X and Y.  * @param destX  * @param destY  */ public void recalculateVector(int destX, int destY) {    float rad = (float)(Math.atan2(destX - startX, startY - destY));     //Can set different speeds here, if you wanted.    speed = 10;     this.dx = (float) Math.sin(rad) * speed;    this.dy = -(float) Math.cos(rad) * speed; }  /**  * Recalculates the vector for this bullet based on the current destination.  */ public void recalculateVector(){     recalculateVector(destX, destY);  }   public static void init(GameContainer gc, StateBasedGame sbg) throws SlickException {      bulletImage;     }      public void move() // Moves this bullet. {    float bulletX = location.getX();    float bulletY = location.getY();     bulletX += dx;    bulletY += dy;     location.setLocation(bulletX, bulletY); }   public int getBulletX(){      return bulletX;  }   public int getBulletY(){      return bulletY;  }   public Image getImage(){      return bulletImage;  }    }   
Английский оригинал

The F250.java class is a gun object, and there are two methods that draw and update the bullets coming out of the gun. I made a Bullet class and made a bullet array in the F250.java class, but the for loops in the Draw and Update method wont execute the code in the for loops to make the bullets come out. I believe it has something to do with the Bullet class, especially with the this.bulletImage variable in the constructor of the Bullet class. In Slick2d the images have to be initialized and i cant get the image I put as a parameter when I make the bullet object in F250.java class to get initialized in Bullet.java class because its not static or soemthing idk. Maybe im wrong and thats not the problem, but if it is, I dont know how to fix that. Main thing is the two for loops wont execute in the F250.java class and thank you for reading all this and thank you to whomever answeres this question I really appreciate taking your time out for me and going through the struggle to solve this tedious problem for me thank you.

package Guns.Human; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask;  import org.lwjgl.input.Mouse; import org.newdawn.slick.Animation; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Image; import org.newdawn.slick.Input; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState; import org.newdawn.slick.state.StateBasedGame;  import Bullet.Bullet; import GUI.Clicker; import MOB.Player;     public class F250 {  static Clicker clicker = new Clicker();  //Gun Preferences static String gun = "F250";  //Images  static Image F250;  static Image fmjBullet;  //Image Coordinates  static int F250_X = Player.getX() + 0;  static int F250_Y = Player.getY() + 20;  static int bulletX = F250_X + 32;  static int bulletY = F250_Y;  //Animations  static Animation charIdleGun;  static Animation shootingGun;  //Animation Rates  private static int[] idle = {120,120,120};  private static int[] gunRecoil ={10,10};   //Booleans  private static boolean holding = true;  private static boolean gunIdle = true;  private static boolean shooting = false;   //Bullet Array Parameters private static Image yellowBulletImage;  private static int bulletStartX = F250_X; private static int bulletStartY = F250_Y; private static int destX = clicker.getMouseX(); private static int destY = clicker.getMouseY(); private static int bulletSpeed = 20; private static Bullet[] bullets = new Bullet[42]; private static Bullet bullet;        public static void init(GameContainer gc, StateBasedGame sbg) throws SlickException {       //Images     F250 = new Image("res/Images/Guns/Human/F250/Normal Gun/F250.png",false,F250.FILTER_NEAREST);      //bullet image     yellowBulletImage = new Image("res/Images/Guns/Human/F250/Bullets/bullet1.png",false,yellowBulletImage.FILTER_NEAREST);      //Bullet     bullet = new Bullet(gun,yellowBulletImage,bulletStartX,bulletStartY,destX,destY,bulletSpeed);        //Image Arrays     Image[] characterIdleGunPics = {new Image("res/Images/Guns/Human/F250/Animation/F250_1.png",false,F250.FILTER_NEAREST), new Image("res/Images/Guns/Human/F250/Animation/F250_2.png",false,F250.FILTER_NEAREST),new Image("res/Images/Guns/Human/F250/Animation/F250_2.png",false,F250.FILTER_NEAREST)};     Image[] shootingGunPics = {new Image("res/Images/Guns/Human/F250/Animation/F250_shot.png",false,F250.FILTER_NEAREST), new Image("res/Images/Guns/Human/F250/Animation/F250_1.png",false,F250.FILTER_NEAREST)};      //Animations     charIdleGun = new Animation(characterIdleGunPics,idle,false);     shootingGun = new Animation(shootingGunPics,gunRecoil,false);  }    public static void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {       Input input = gc.getInput();        //make inventory later and make holding this gun conditional if clicked on in the inventory       if(gunIdle == true){          charIdleGun.draw(F250_X,F250_Y,96,96);      }        if(input.isMouseButtonDown(0) == true){           shooting = true;         gunIdle = false;      }       if(input.isMouseButtonDown(0) == false){          shooting = false;         gunIdle = true;      }         if(shooting == true){          shootingGun.draw(F250_X,F250_Y,96,96);            Image gunShootingFrame = shootingGun.getImage(1);          if(gunShootingFrame != null){              //Rotates the gun towards the mouse  ---  while gun is Shooting              float distanceX = clicker.getMouseX() - F250_X;             float distanceY = clicker.getMouseY() - F250_Y;             float h = (float) Math.sqrt(distanceX * distanceX + distanceY * distanceY);             float dn = (float)(h / Math.sqrt(2));             System.out.println("in gunShootingFrame != null brace");                   double degrees = Math.toDegrees(Math.atan2(distanceX, distanceY));             float angle = (float) degrees;               //Draw the bullets (THIS LOOP WONT RUN)             for(int i = 42 ; i == 0; i = i - 1){                   bullets[i] = bullet;                  bullets[i].getImage().draw(bullet.getBulletX(),bullet.getBulletY(),64,64);                  bullets[i].getImage().setRotation(angle);                  System.out.print("Bullet: " + i + " rendered");              }            }      }    }    public static void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {      Input input = gc.getInput();          //Rotates the gun towards the mouse  ---  while gun is Idle     Image rotatedGunIdle1 = charIdleGun.getImage(0);     Image rotatedGunIdle2 = charIdleGun.getImage(1);     Image rotatedGunIdle3 = charIdleGun.getImage(2);      float xDistance = Clicker.getMouseX() - F250_X;     float yDistance = Clicker.getMouseY() - F250_Y;     double degrees = Math.toDegrees(Math.atan2(yDistance, xDistance));     float angle = (float) degrees;      rotatedGunIdle1.setRotation(angle);     rotatedGunIdle2.setRotation(angle);     rotatedGunIdle3.setRotation(angle);          //Rotates the gun towards the mouse  ---  while gun is Shooting     Image rotatedGunShooting1 = shootingGun.getImage(0);     Image rotatedGunShooting2 = shootingGun.getImage(1);       rotatedGunShooting1.setRotation(angle);     rotatedGunShooting2.setRotation(angle);        if(gunIdle == true){          charIdleGun.update(delta);         charIdleGun.setPingPong(true);      }       if(input.isMouseButtonDown(0) == true){          shooting = true;         gunIdle = false;      }       if(input.isMouseButtonDown(0) == false){          shooting = false;         gunIdle = true;      }        if(shooting == true){          shootingGun.update(delta);          //Update the bullet's position. (THIS LOOP WONT RUN)           for(int i = 42; i == 0; i = i - 1)           {               bullets[i] = bullet;              bullets[i].move();              bullets[i].getImage().draw(bullet.getBulletX(),bullet.getBulletY(),64,64);              bullets[i].getImage().setRotation(angle);              bullets[i].move();              System.out.print("Bullet: " + i + " updated");                //NOTE: Will need to determine if this hit something or went off the screen. Or otherwise, the list will get filled with invalid bullets.              //You'll have to add that yourself. Idiot.           }      }         }  public static boolean ifHolding(){        return holding;   }  public static int getRecoil(int index){      return gunRecoil[index];  }  }        package Bullet;  import org.newdawn.slick.GameContainer; import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; import org.newdawn.slick.geom.Point; import org.newdawn.slick.state.StateBasedGame;  public class Bullet {  String bulletImageURL = "res/Images/Guns/Human/F250/Bullets/bullet1.png"; String gun = "no gun written in parameters idiot"; private Image bulletImage; private int startX = 0; private int startY = 0; private int destX = 0; private int destY = 0; private Point location = new Point(0,0); private float speed = 50; //how fast this moves. ( By Default ) private float deg; private float dx; private float dy;  private int bulletX; private int bulletY;     public Bullet(String gun, Image bulletImage, int startX, int startY, int destX, int destY, int speed){     this.bulletImage = bulletImage;    this.gun = gun;    this.speed = speed;    this.startX = startX;    this.startY = startY;    location.setLocation(startX, startY);    this.destX = destX;    this.destY = destY;    recalculateVector(destX, destY);    System.out.println("The url for gun: " + gun + " is " + bulletImageURL);  }  /**  * Calculates a new vector based on the input destination X and Y.  * @param destX  * @param destY  */ public void recalculateVector(int destX, int destY) {    float rad = (float)(Math.atan2(destX - startX, startY - destY));     //Can set different speeds here, if you wanted.    speed = 10;     this.dx = (float) Math.sin(rad) * speed;    this.dy = -(float) Math.cos(rad) * speed; }  /**  * Recalculates the vector for this bullet based on the current destination.  */ public void recalculateVector(){     recalculateVector(destX, destY);  }   public static void init(GameContainer gc, StateBasedGame sbg) throws SlickException {      bulletImage;     }      public void move() // Moves this bullet. {    float bulletX = location.getX();    float bulletY = location.getY();     bulletX += dx;    bulletY += dy;     location.setLocation(bulletX, bulletY); }   public int getBulletX(){      return bulletX;  }   public int getBulletY(){      return bulletY;  }   public Image getImage(){      return bulletImage;  }    } 
</div
              
     
     

Список ответов

4
 
vote
vote
Лучший ответ
 

Вот ваша петля:

 <код> gksudo3  

<Код> gksudo4 установлен в <код> gksudo5 . Тогда средняя часть состояла в том, что цикл продолжится только в том случае, если <код> gksudo6 который является <код> gksudo7 , потому что вы просто устанавливаете его в <код> gksudo8 . Таким образом, петля останавливается, и никогда даже не выполняет одну итерацию.

Вы, вероятно, хотите

 <код> gksudo9  

Это будет циклично, пока <код> sudo0 меньше или равно <код> sudo1 и <код> sudo2 спустится из <код> sudo3 sudo4 каждый раз, то есть цикл будет выполняться <код> sudo5 время

 

Here is your loop:

 for(int i = 42 ; i == 0; i = i - 1){ 

i is set to 42. Then the middle part states that the loop will only continue if i == 0 which is false because you just set it to 42. So the loop stops, and never even executes one iteration.

You probably want

for(int i = 42 ; i > 0; i = i - 1){ 

This will loop until i is less than or equal to 0 and i will go down from 42 by 1 each time, meaning the loop will execute 43 times

</div
 
 
         
         

Связанный проблема

105  Почему C # реализует методы как не виртуальные по умолчанию?  ( Why c sharp implements methods as non virtual by default ) 
В отличие от Java, почему C # методы лечения как не виртуальные функции по умолчанию? Скорее всего, это проблема производительности, а не на других возможных ...

0  Java нерешенная переменная JPanel?  ( Java unresolved jpanel variable ) 
Почему не может <код> aniPanel быть разрешена в переменной. Я пробовал <код> AniPanel aniPanel = new AniPanel(); Но это не решает проблему. Я также по...

1  Обратитесь к веб-странице внутри файла JAR  ( Refer to a web page inside a jar file ) 
У меня есть рабочий проект. Он включает в себя другой проект, который имеет дело с отдыхом как REST-API.jar. Теперь я сделал одностраничное интернет-интерфе...

-1  SQL Server для моего SQL  ( Sql server to my sql ) 
У меня есть новый проект от моего учителя, чтобы преобразовать базу данных в другую. Как я могу преобразовать базу данных MS SQL в MySQL с помощью Java? ...

1  Кварц Schdeuler для нескольких проектов в JBOSS 5  ( Quartz schdeuler for multiple projects in jboss 5 ) 
Я развернул два проекта (P1 & AMP; P2) в JBOSS 5. Оба проекта настроены с различными кварцевыми планировщиками. Но когда я заплатурую работу на P1, он доступа...

12  Способ вызова в EJB на jboss запустить [дубликат]  ( Call method in ejb on jboss startup ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Этикетки для вершин с использованием библиотеки Юнга  ( Labels for vertices using jung library ) 
Я начал использовать библиотеку Юнга для моей визуализации графика. Основная проблема в настоящее время в настоящее время я не знаю, как установить этикетки /...

0  ConstanaintValidator - сделать JPA сделать проверку после ввода  ( Constraintvalidator make jpa make the validation after input ) 
Можно ли сделать JPA проверить вход сразу после типов пользователей в чем-либо? Я использую EclipseLink. Я не хочу ждать, пока JPA сохраняется для проверк...

1  Простое Javaee HTML Get / Post Application  ( Simple javaee html get post application ) 
Я просто начинаю с Javaee (я вполне свободно владею в Javase), и у меня возникли проблемы с обездованием моего мозга вокруг всех новых вещей, которые необходи...

4  Как полностью квалифицировать класс, имя пакета которого сталкивается с местным именем члена?  ( How to fully qualify a class whose package name collides with a local member nam ) 
ОК, вот очень любопытная языковая головоломка Java 7 для специалистов JLS там. Следующий кусок кода не скомпилируется, ни с Javac, ни с Eclipse: <код> ...

1  WebView loaddatawithbaseurl java.lang.nullpointerexception  ( Webview loaddatawithbaseurl java lang nullpointerexception ) 
<код> //. . . public class MainActivity extends Activity { //. . . @Override protected void onCreate( Bundle savedInstanceState ) { //....

1  Eclipse IDE отключается часто  ( Eclipse ide shuts down frequently ) 
Я пытался использовать SDK SDK SDK 22.3.0-887826, чтобы узнать о Develeopment Android, однако IDE отключается часто. Это происходит много, но в основном при и...

1  Получить все идентификаторы элементов из Dynamodb Java с помощью dynamodbmapper  ( Retrieve all items ids from dynamodb java using dynamodbmapper ) 
Моя цель - получить идентификаторы всех предметов. Для этого я собираюсь использовать Java и Dynamodbmapper. Способ сделать это использовать сканирование . П...

0  Basic Echo Server, отношения клиент-сервера  ( Basic echo server client server relationship ) 
Так как мой проект, который мне пришлось написать класс клиента и простой класс серверов, который будет эхом сообщение, написанным клиентом. По какой-то при...

0  Чехол для тестирования, где нуль должен быть возвращен с помощью RestController с Mockito Change  ( Testing case where null should be returned using restcontroller with mockito fai ) 
Я хочу проверить корпус NullPointexception, который следует бросить контроллер, который я проверяю, но я всегда получаю ошибку NullPointexception. Я пытаюсь п...