Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 5

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

07.06.2016, 23:22. Показов 936. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть поле 4 х 4, в котором расположены случайные буквы от А до Р. Нужно, чтобы малые квадраты 2 х 2 вращались по часовой стрелке при нажатии на их левый верхний угол.
Поле игры:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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();
    }
}
Нужно, чтобы при нажатии на одну кнопку изменялись текстовые значения сразу четырех, это я и не могу реализовать. Получается изменить только значение конкретной кнопки, нужно же узнать текущие значения четырех из малого квадрата и повернуть по часовой стрелке. Увы, не понимаю, как это сделать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2016, 23:22
Ответы с готовыми решениями:

Хочу в обработке нажатия кнопки перейти на нужную страничку
Навигация. С#. (типа HISTORY). Как перейти в желаемое место?

Как сделать обработку нажатия мышкой на Label
Добрый день! Создаю игру угадай мелодию, и в режиме для одного игрока нужно сделать 5 вариантов ответа. Делаю это через Label и при нажатии...

Волшебный квадрат
Создайте программу, которая узнает, является ли данный квадрат волшебным. Квадратный волшебно, когда сумма элементов во всех строках,...

1
 Аватар для Aliara
18 / 18 / 13
Регистрация: 18.06.2015
Сообщений: 79
08.06.2016, 13:50
Если я вас правильно поняла, то как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 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);
                }
            }
        }
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2016, 13:50
Помогаю со студенческими работами здесь

Волшебный квадрат
Дан квадратный массив NxN, у которого сумма элементов в каждой строке, в каждом столбце и в двух его диагоналях равна одному и тому же...

Волшебный квадрат
На день рождения Егору подарили волшебный квадрат. Волшебный квадрат — это таблица 3 x 3, в каждой из ячеек которой находятся числа от...

Волшебный квадрат
Волшебный квадрат На день рождения Егору подарили волшебный квадрат. Волшебный квадрат — это таблица 3 × 3, в каждой из ячеек...

Калькулятор swing: не получается в поле записать значение после нажатия кнопки
Проблема такая: не получается в поле записать значение после нажатия кнопки. Кнопки &quot;слушаются&quot; но значение в текстовое поле не...

Графика. Не получается сделать нормальный квадрат
public partial class Form1 : Form { public Form1() { InitializeComponent(); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru