|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
||||||
Прорисовка доски для игры в нарды, и совершение ходов05.02.2016, 23:12. Показов 4746. Ответов 7
Метки нет (Все метки)
Привет всем. Ребята, разрабатываю короткие нарды в качестве учебного проекта на Java. Возник вопрос, ответ на который не могу найти абсолютно нигде. С консольным вариантом приложения вроде проблем не возникло особых. Хочу написать пользовательский интерфейс с красивой доской, фишками и зарами. Вот, собственно, и вопрос назрел. Есть у меня, например, красивая фотка доски, я ее загружаю в свою программу без проблем вот таким образом:
0
|
||||||
| 05.02.2016, 23:12 | |
|
Ответы с готовыми решениями:
7
Алгоритм для просчета допустимых ходов в игре нарды. Приложение для игры в нарды Программа для вывода возможных ходов коня по клику на клетку шахматной доски |
|
50 / 49 / 25
Регистрация: 05.02.2016
Сообщений: 146
|
|||||||||||||||||||||
| 06.02.2016, 16:48 | |||||||||||||||||||||
|
Привет. Все очень просто:
Пишем примерно такой класс:
![]() Вот как-то так.
0
|
|||||||||||||||||||||
|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
|
| 06.02.2016, 19:50 [ТС] | |
|
примерно понятно, буду разбираться, огромное спасибо!!!!!
Добавлено через 17 минут Можешь объяснить, пожалуйста, почему переменным volatile int f_white_1_x и volatile int f_white_1_y присвоено значение 25? И не совсем понял, что делает цикл. Получается, что он каждый тридцать пятый раз увеличивает координату х белой фишки на 1 и перерисовывает JFrame с задержкой в 10 миллисекунд. Не пойму почему условие (i < 35), откуда взято значение 35? И получается, что этот цикл выполняется в отдельном потоке? В общем, объясни немного, пожалуйста, а то не совсем понятно.
0
|
|
|
50 / 49 / 25
Регистрация: 05.02.2016
Сообщений: 146
|
|
| 06.02.2016, 23:28 | |
|
По поводу значений 25 и 35 - это же просто пример. Я когда у себя это все делал, нагуглил быстренько картинку доски, и 25, 25 - это получились координаты первой белой фишки, а 35 - это расстояние сдвига до соседнен позиции. На другой картинке доски будут, соответственно, другие координаты. Надо подгонять
![]() По поводу цикла. В данном примере переменная f_white_1_x - это координата x первой белой фишки, хотя по-хорошему бы надо хранить координаты фишек в массиве, но раз сейчас мы говорим только про рисование, пусть на доске будет всего одна фишка - такая сферическая в вакууме ![]() Так вот цикл этот 35 раз сдвигает координату фишки вправо на 1 точку и каждый раз перерисовывает всю доску. Так получатся анимация. Вообще, надо сделать красивее - чтобы фишка на просто ехала, а, например, прыгала или переворачивалась. Вобщем, надо фантазировать... Может гифок анимационных навтыкать... С ними, кстати, есть нюанс - если сделать g.drawImage(анимационный гиф...) то он сам запустит отдельный поток, который будет автоматом постоянно перерисовывать всю сцену. А анимация должна запускатья в отдельном потоке. Это лучше в документации про Swing глянуть, там не сложно, но и не в одно прдложение ![]() Могу выложить весь код, который у меня получился, но просто я делал в Нетбинсе, а он при рисовании окошечек и нопочек делает в коде некую галиматью, которая бы только отвлекала
0
|
|
|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
|
| 07.02.2016, 02:19 [ТС] | |
|
все понял, еще раз огромное спасибо, буду пробовать ))
Добавлено через 2 часа 5 минут Еще один вопрос, наверное задолбал уже, просто инфы нигде нету, не обессудь) короче, допустим есть у меня метод posibleMoves(), который принимает на вход координаты фишки, и возвращает массив с допустимыми ходами. Все координаты фишек и их количество на определенном поле доски хранятся в массиве int[] countFishkas[24]. 24 потому что на доске 24 поля всего. В массиве хранится количество фишек на определенном поле. Есть еще один массив такой же размерности, где хранятся цвета фишек. Например, я вызываю метод posibleMoves с параметром 0, он смотрит какого цвета фишки в нулевой ячейке доски и возвращает допустимые хода. Так вот, как привязать это все дело к графическому интерфейсу? Допустим я клацаю мышкой на определенное поле своей картинки доски, и подсвечиваются все возможные хода. Я так понимаю нужно имплементить интерфейс mouse listener, а именно метод onClickListener(). Не мог бы ты натолкнуть на мысль, как все это соединить, спасибо.
0
|
|
|
50 / 49 / 25
Регистрация: 05.02.2016
Сообщений: 146
|
||||||
| 07.02.2016, 17:03 | ||||||
|
Чтобы отловить мышу, надо там, где инициализируется JPanel (мы же рисуем на панели), сделать addMouseListener:
1
|
||||||
|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
|
| 07.02.2016, 17:30 [ТС] | |
|
Я как раз думаю так и сделать. Короче, получается надо как-то сопоставить мой массив с количеством фишек в полях и реальные координаты полей в пикселях на картинке. И при нажатии на определенное поле картинки вызывать метод, параметром которого будет индекс массива, соответствующий нажатому полю. Буду пробовать, как что-либо получится, отпишусь.
ЗЫ: спасибо за подсказки, фигуры выставил на доске, осталось только движение правильное замутить.
0
|
|
|
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 2
|
|
| 20.09.2022, 22:53 | |
|
Alex-Borshch, подскажите как с вами связаться можно? Нужна для курсовой разработка такой же игры, купил бы у вас ее)
0
|
|
| 20.09.2022, 22:53 | |
|
Помогаю со студенческими работами здесь
8
Class ходов шахматной доски 10х10 Наименьшее количество ходов для прохождения игры, алгоритм Дейкстры Найти кол-во ходов коня с определенной позиции шахматной доски Обход ферзем всех полей доски за 15 ходов (начиная в С3, заканчивая в F6) Изменить правила игры короткие нарды на длинные Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|