2013-04-09 3 views
0

Привет Я создаю программу Battleship для своего класса Java. Прямо сейчас, я пытаюсь работать над классом, который стреляет выстрелами. Чтобы стрелять, я пытаюсь изменить цвет фона с синего (что означает, что это просто пустая ячейка) на желтый (чтобы показать, что я выстрелил в эту ячейку, но там ничего нет).Для изменения цвета фона

Это код для класса Fire. Я могу включить другие классы, на которые он наследует, если вы считаете это необходимым. Главное, с чем я столкнулся, - это заставить мой цикл «за» пройти и действительно изменить фон от синего до желтого для количества итераций, которые я хочу. 100 - произвольное число для целей тестирования.

public class Fire extends Ship{ 

    public Fire() throws InterruptedException{ 
     super.setShipV(); 
    } 
    public void Shoot() throws InterruptedException { 

     Random random= new Random(); 

     int a = random.nextInt(100); 
     int b = random.nextInt(100); 

     for (int i = 0; i< 100; i++){ 
      //for(int j = 0; j< 50; i++){ 
      grid[a][b].setBackground(Color.yellow); 
     } 
    } 
} 

Благодарим за помощь.

Ханна

ответ

1

Вы должны использовать переменные итератора при обращении к сетке.

Попробуйте что-то вроде этого:

for (int i = 0; i< 100; i++){ 
    for(int j = 0; j< 50; i++){ 
     grid[i][j].setBackground(Color.yellow); 
} 

или если вы хотите изменить 100 случайных полей положить random.nextInt внутри петли так a и b изменения в каждой итерации (случайные значения могут поразить то же значение, что и предыдущим итерации)

for (int i = 0; i< 100; i++){ 
    int a = random.nextInt(100); 
    int b = random.nextInt(100); 
    grid[a][b].setBackground(Color.yellow); 
} 

единственный код, который запускается на выполнение в каждой итерации код между { (после for(..)) и }. Это означает, что в вашем коде a и b устанавливаются один раз, а затем вы помечаете одно и то же поле сетки желтым сто раз. Если вы сделаете так, вы дадите a и b новое значение на каждой итерации.

+0

Большое спасибо. Вторая часть сработала. Почему это нужно было сделать так? Что случилось с тем, как я это делал? Определенно не нужно отвечать, но я не хочу делать ту же ошибку в будущем. Hannah – HanH1113

+0

@ HanH1113 Обновлен ответ с небольшим пояснением. Надеюсь, это станет более ясным. Если нет, скажите, пожалуйста, так что я могу улучшить его дальше. :) – MAV

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