Игра "Волшебный квадрат". Не получается сделать нужную обработку нажатия кнопки - Java

Узнай цену своей работы

Формулировка задачи:

Есть поле 4 х 4, в котором расположены случайные буквы от А до Р. Нужно, чтобы малые квадраты 2 х 2 вращались по часовой стрелке при нажатии на их левый верхний угол. Поле игры:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.util.Random;
 
public class game1 extends JFrame {
    Random rand = new Random();
    JPanel buttonPanel = new JPanel(new GridLayout(4,4));
    ActionListener actionListener = new ButtonClick();
    JButton[] buttons=new JButton[16];{
    for(int i=0;i<16;i++)
    {
     buttons[i]=new JButton();}
    }
    game1() {
        setLayout(new BorderLayout());
        add(buttonPanel,BorderLayout.CENTER); 
        for (int i=0; i<16; i++)
        {
            buttonPanel.add(buttons[i]);
        }
        setBounds(300, 300, 300, 300);
        for (int i=0; i<16; i++)
        {
            buttons[i].addActionListener(actionListener);
        }
        int a[] = new int [16];
        char l[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'};
        int temp = 0 ;
        int i = 0 ;
        while(i<15)
        {
            temp = rand.nextInt(l.length);
            for(int j=i; j>=0; --j)
            {
                if(a[j] == temp)
                    break;
                else if (j==0)
                {           
                    a[i] = temp;
                    ++i;
                }
            }
        }
        for( i=0; i<16; i++)
        {
            buttons[i].setText(String.valueOf(l[a[i]]));
        }
        setVisible(true);
    }

    public static void main(String[] args) {
        new game1();
    }
}
Нужно, чтобы при нажатии на одну кнопку изменялись текстовые значения сразу четырех, это я и не могу реализовать. Получается изменить только значение конкретной кнопки, нужно же узнать текущие значения четырех из малого квадрата и повернуть по часовой стрелке. Увы, не понимаю, как это сделать

Решение задачи: «Игра "Волшебный квадрат". Не получается сделать нужную обработку нажатия кнопки»

textual
Листинг программы
 private class ButtonClick implements ActionListener {
 
        @Override
        public void actionPerformed(ActionEvent e) {
            int k=0;
             JButton currentButton=(JButton)e.getSource();
            for (int i=0; i<16; i++){ 
                if (currentButton.equals(buttons[i])){
                  k=i-1;
                  String current=buttons[k].getText();
                  buttons[k].setText(buttons[k+4].getText());
                  buttons[k+4].setText(buttons[k+5].getText());
                  buttons[k+5].setText(buttons[k+1].getText());
                  buttons[k+1].setText(current);
                }
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5