Привет У меня есть массив объектов пули. У меня есть объекты bullet isAlive var, установленный в false. Если я запустил код, не нажимая кнопку пробела (который запускает пулю) и распечатывает объекты массива isAlive var, и он печатает их все ложные (как следует).Элементы массива не установлены правильно
Если я нажимаю кнопку пробела, когда пуля появляется на экране и движется правильно, но когда я распечатываю массив пули, показывающий isAlive var, все они имеют значение true с одинаковыми положениями x/y. Если я нажму пробел дважды два пули появляются и ходят нормально, но снова, когда я печатаю массив, он показывает первые десять элементов как живых, с одинаковыми положениями x/y (первая пуля на экране), а следующая десятка также жива с тем же x/y (2-я пуля на экране)
больше никаких нажатий на пробел не добавляет новых пуль. здесь, 's код для fireButton()
public void fireBullet(){
if(currentBullet > BULLETS -1){
currentBullet = 0;
}
if(bullet[currentBullet].isAlive()==false){
bullet[currentBullet].setAlive(true);
bullet[currentBullet].setxPos(ship.getxPos());
bullet[currentBullet].setyPos(ship.getyPos());
}
currentBullet ++;
}
и здесь были его называли в KeyPressedMethod
case KeyEvent.VK_SPACE:
fireBullet();
break;
кто может видеть, где я буду неправильно Being баловаться с кодом для? через некоторое время теперь и в моей голове :)
EDIT: Я отвечу на все вопросы, если могу здесь :) 1) currentBullet является частным членом класса и сначала инициализируется 0, а затем приращение в методе fireBullet() для каждого b Ullet произвели до 20 и затем сбрасываются в 0.
2), когда я iniatilise массива пули я назначить новые Пули() для каждой пулю конструктора element.Each устанавливает IsAlive ложных
; 3) пуля вар IsAlive снова устанавливается в ложь, когда он выходит из экрана 4) вот Keypressed метод в полной
public void keyPressed(KeyEvent k) {
int keyCode = k.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_A:
//move ship left
if(ship.getxPos()<20){
ship.setxPos(20);
}else
ship.setxPos(ship.getxPos()-1);
break;
case KeyEvent.VK_D:
if(ship.getxPos()>1260){
ship.setxPos(1260);
}else
ship.setxPos(ship.getxPos()+1);
break;
case KeyEvent.VK_SPACE:
fireBullet();
break;
}
}//end keypressed event
Я думаю, что рендеринг в порядке, как это рисунок пули, но рисунок 10 или двадцать из них на вершине друг от друга, поэтому, когда код запускается, вы видите только две пули, движущиеся вверх по экрану,
Проблема заключается в том, что в каждом пробеле должна быть только 1 живая пуля, но нажимая ее, когда все 20 пуль установлены в живую!
2nd EDIT: Я печатаю текущую пулю в конце игрового цикла и, похоже, правильно увеличивает, что указывает на то, что метод fireBullet() вызывается на каждом пробеле, просто кажется, что заполняет массив живыми пулями для каждое пресвещение
Не могли бы вы показать нам свой метод 'keyPressed' в целом? – NPE
Также попробуйте распечатать сообщение в начале 'fireBullet()' и посмотреть, будет ли метод вызываться ровно один раз при каждом нажатии пробела. – NPE
и как вы устанавливаете currentBullet? –