|
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
|
||||||
Прорисовка доски для игры в нарды, и совершение ходов05.02.2016, 23:12. Показов 4715. Ответов 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) Изменить правила игры короткие нарды на длинные Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|