2015-10-19 5 views
-2

у меня возникла проблема с порядком моего кода ...(Java) последовательность выполнения

вот оно.

  switch (j) { 
       case 0: 
        enemy.setNewLife(j); 
        break; 
       case 1: 
        enemy.setNewLife(j); 
        break; 
       case 2: 
        enemy.setNewLife(j); 
        break; 

      } 

       switch (n) { 
        case 0: 
         player.setGun1(); 
         enemy[j] = 
         break; 
        case 1: 
         player.setGun2(); 
         break; 
       } 

поэтому enemyship имеет жизнь 10. тогда сила пушка имеет 4

enemyshipLife - = gunpower

первого выстрела enemyLife = 6; boolean dead = false;

2-й выстрел enemyLife = 2; boolean dead = false;

3-й выстрел enemyLife = -2; boolean dead = true;

мой пистолет не получит очков ... сог мой код выполнил setNewLife ... поэтому изменение булево к истинным ........

я попытался поменять местами положение переключателя (п) и если (enemyLife [j] < = 0 & & dead [j] == false) ... но мое оружие все еще не получает очков .... если сила пистолета = 5 ... пистолет получает правильное баллы.

любая идея?

Я просто подумал ... как получилось, что мой gun2 получил точку.? если причина в том, что setNewLife выполняется первым .. тогда мой gun2 не получит точки либо ??? теперь это становится более странным ...

+0

java или javascript? Я смущен. и, пожалуйста, отформатируйте это лучше. – ergonaut

+0

Выглядит как Java, но он помечен как 'javascript'. OP, исправьте тег (или заголовок). –

+0

Код немного грязный, можете ли вы обновить форматирование? – SoluableNonagon

ответ

0

У вас есть серьезные проблемы с пониманием OO. Вы помещаете переменные внутри массивов, а некоторые - в объекты. Вы должны положить все внутри объектов (например, Enemy, Gun, Player).

Возьмем, к примеру:

enemy1.setNewLife(enemyLife[j]); 

и

if (enemyLife[j] <= 0 && dead[j] == false) 

так enemy1 (Object), enemyLife [], и мертвые [] (Array), очевидно, связаны между собой, вы должны поместить их в то же самое место:

public class Enemy { 
    protected int lifeScore; 
    protected boolean dead; 
    protected in position; 
    //.. add constructor, getters 
} 

, а затем вы можете получить к ним доступ в массиве Enemy-s.

Enemy [] enemy = new Enemy[3]; 
enemy[0] = new Enemy(); 
enemy[1] = new Enemy(); 
enemy[2] = new Enemy(); 

enemy[0].adjustLife(int someDelta); // to adjust the life of this enemy 
enemy[0].getLife(); // to get the life points 
enemy[0].isDead(); // to check if it's dead 
enemy[0].getPosition(); // to retrieve the position 
+0

я согласен с тобой .... но мой учитель сделал скелет ... и это было сделано таким образом ... я получил 5 класс .. один для игроков, враг, глобальный (для ввода с клавиатуры), игра и пистолет .... объект gun1 и gun2 был сделан в классе игроков ... затем enemy1,2,3 в классе Game Кроме того, lifescore, булев помещаются на враждебном классе ... тогда положение в PlayerShip, enemyship и классе ружья .. все они получили личный ИНТ позиции ... .. Я думаю, что это лучше назвать инициализацией? когда я делаю «враг [1] = новый Враг();» его называется инициализировать право? или создать объект? – trojinshi

+0

но как установитьNewLife, связанный с enemyLife? Если вы не свяжете их вместе, враг не изменится. Вы можете попробовать передать setNewLife (enemyLife) и изменить индекс массива. – ergonaut

+0

idk как им это делать, но когда я вызываю enemy1.setNewLife (вводя здесь значение (враг1 - gunPower) , то setNewLife, который находится в классовом враге, который также имеет значение int Life = новое значение , тогда я изменяю логическое состояние, если его 0 или отрицательный – trojinshi

Смежные вопросы