|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
||||||
Прорисовка доски для игры в нарды, и совершение ходов05.02.2016, 23:12. Показов 4743. Ответов 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) Изменить правила игры короткие нарды на длинные Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю 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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|