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