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

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

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

Есть поле 4 х 4, в котором расположены случайные буквы от А до Р. Нужно, чтобы малые квадраты 2 х 2 вращались по часовой стрелке при нажатии на их левый верхний угол. Поле игры:
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionListener;
  4. import java.util.Random;
  5. public class game1 extends JFrame {
  6. Random rand = new Random();
  7. JPanel buttonPanel = new JPanel(new GridLayout(4,4));
  8. ActionListener actionListener = new ButtonClick();
  9. JButton[] buttons=new JButton[16];{
  10. for(int i=0;i<16;i++)
  11. {
  12. buttons[i]=new JButton();}
  13. }
  14. game1() {
  15. setLayout(new BorderLayout());
  16. add(buttonPanel,BorderLayout.CENTER);
  17. for (int i=0; i<16; i++)
  18. {
  19. buttonPanel.add(buttons[i]);
  20. }
  21. setBounds(300, 300, 300, 300);
  22. for (int i=0; i<16; i++)
  23. {
  24. buttons[i].addActionListener(actionListener);
  25. }
  26. int a[] = new int [16];
  27. char l[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'};
  28. int temp = 0 ;
  29. int i = 0 ;
  30. while(i<15)
  31. {
  32. temp = rand.nextInt(l.length);
  33. for(int j=i; j>=0; --j)
  34. {
  35. if(a[j] == temp)
  36. break;
  37. else if (j==0)
  38. {
  39. a[i] = temp;
  40. ++i;
  41. }
  42. }
  43. }
  44. for( i=0; i<16; i++)
  45. {
  46. buttons[i].setText(String.valueOf(l[a[i]]));
  47. }
  48. setVisible(true);
  49. }
  50.  
  51. public static void main(String[] args) {
  52. new game1();
  53. }
  54. }
Нужно, чтобы при нажатии на одну кнопку изменялись текстовые значения сразу четырех, это я и не могу реализовать. Получается изменить только значение конкретной кнопки, нужно же узнать текущие значения четырех из малого квадрата и повернуть по часовой стрелке. Увы, не понимаю, как это сделать

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут