Игра "Волшебный квадрат". Не получается сделать нужную обработку нажатия кнопки - 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); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д