|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
Объясните реализацию логики тетриса27.07.2016, 11:30. Показов 6627. Ответов 65
Добрый день я учу Java и пробую практиковаться. Собрал свой первый арканойд на JavaFX. Теперь пытаюсь собрать тетрис. Сделал класс поля с массивом нулей и нарисовал его. Для тестирования загнал в этот массив вручную вместо нулей несколько единиц в качестве возможной фигурки и все это рендерится в одном методе по условию проверки на 1 или 0.
Но я не понимаю как мне передавать в массив фигурку и двигать ее там, перерисовывая весь массив на каждый сдвиг фигурки ? Если я правильно понимаю конечно. Нигде нет подробного объяснения. Подскажите как надо и как лучше
0
|
|
| 27.07.2016, 11:30 | |
|
Ответы с готовыми решениями:
65
Объясните реализацию формы Объясните реализацию интерфейсов на примере интерфейса IAny пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки. |
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
||
| 31.07.2016, 14:56 [ТС] | ||
|
Первый способ (современный) рисовать ее и двигать поверх доски,как отдельный элемент при столкновении удалять и перерисовывать ее на доску как часть массива. Второй способ (олдскульный) рисовать и двигать фигуру прям в массиве доски и постоянно перерисовывать доску. в начале я хотел сделать по второму способу и хотел спросить как же мне там управлять фигурой. Теперь после неудачный попыток я уже запутался вообще и не знаю, что и как лучше делать.
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 02.08.2016, 15:45 | |
|
нате читайте
http://mech.math.msu.su/~shvet... deas.xhtml
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
||
| 02.08.2016, 17:56 [ТС] | ||
|
я уже немного подразобрался ) научился выводить фигурки на доску рандомно ) теперь думаю над алгоритмом падения и проверки столкновений
0
|
||
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
| 03.08.2016, 23:59 [ТС] | |
|
могу опускать и останавливать фигурку - но падение никак не привязано к массиву доски,
то есть фигурка не знает на каком ряду находится и сколько занимает столбцов, а двигается в данный момент за счет изменения своих графических координат объекта сцены Java FX (класс Pane), в котором лежат составные квадраты фигурки. Не могу понять как мне сравнить элементы в ряду доски с элементами в фигурке.
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 04.08.2016, 08:36 | |
|
Sergio89, вы математику в школе учили? Сравнивайте координаты фигуры относительно координат доски.
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
| 04.08.2016, 12:03 [ТС] | |
|
Картина со старой темы другого форума (там были уже делавшие тетрис и немного смогли немного подсказать автору)
Здесь же все туго с советами - приходится писать самому себе, типа мысли в слух. Массив с фигурой опускается вниз перед этим проверяется нет ли в строке под ним препятствия (клетки со значением 1) если есть - надо проверить в одном ли ряду находится единицы фигурки и единица "препятствия" Что я упустил ? нюансов проверки много и сложно мне написать все сходу. Как понять с какой строки начать проверку ? в момент появления фигурка может занимать разное пространство в верху экрана. Как сопоставлять ячейки фигурки с ячейками доски, чтобы столкновение срабатывало именно в том ряду, где находится препятствие
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
| 04.08.2016, 12:22 [ТС] | |
|
PS
Ладно хоть тему не удаляют, как на некотором быдлоресурсе с названием бытового прибора
0
|
|
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 04.08.2016, 12:35 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
||
| 04.08.2016, 12:47 [ТС] | ||
|
Ну выложу я имеющийся код на гидхаб, кто-то захочет в нем копаться ? (хотя там особо разбираться не в чем - 4 небольших класса ) Я пытаюсь находить нужные мне паттерны в исходниках разных платформ, но мне не все понятно как могу пытаюсь описать процесс в надежде, что зайдет человек, который уже делал и опишет как он делал.
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 04.08.2016, 12:54 | |
|
Ты объясни, чего тебе не понятно то.
Берешь фигуру, обходишь все клетки, проверяешь, что клетка, которая ниже текущей не содержит препятствие, если для каждой из клеток фигуры условие выполняется, добавляешь 1 к координате Y.
0
|
|
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
| 04.08.2016, 13:05 | |
|
может этой теме место в разделе, где обсуждают алгоритмы?
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
||
| 04.08.2016, 13:10 [ТС] | ||
|
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 04.08.2016, 13:37 | ||
|
Да кстати для ускорения определения уперлась фигура или не уперлась заведи одномерный массив по ширине стакана, в котором держи номер максимально верхней заполненой ячейки, фигуру сравнивай с этим массивом. При ширине фигуры это всего 4 сравнения максимум на шаг модели.
1
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 04.08.2016, 14:36 | |
|
Если текущая клетка X,Y, то ниже текущей X,Y+1.
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
||||||||||||
| 04.08.2016, 18:07 [ТС] | ||||||||||||
|
У меня нет координат связанных с ячейками Есть графические координаты объекта сцены, которые я на данный момент изменяю на размер одного квадратика (15px+1px) и все. это никак пока не связано с индексами в массиве доски Добавлено через 19 минут Может так хоть станет понятнее )) А то мне кажется, что мне объясняют то, чего в коде у меня попросту нет Класс фигурки считывает Enum c массивами форм. Сам Enam нет смысла показывать там все понятно - список названий и соответствующий массив
Класс поля, в который будут попадать упавшие фигурки
Все это используется в классе Main создающее окно JavaFX тоже думаю нет смысла его показывать как и энам. Все практически тоже самое как если бы это было на swing Добавлено через 2 часа 24 минуты JavaFX вынуждает изменить подход и использовать его API походу мне придется использовать не проверку по массивам, а проверку по списку, в который я заношу кубики, когда их отрисовываю.
0
|
||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 04.08.2016, 18:10 | |
|
0
|
|
|
4095 / 2700 / 590
Регистрация: 11.09.2009
Сообщений: 9,625
|
||
| 04.08.2016, 18:19 | ||
|
Попробуйте сначала продумать и прорисовать на бумажке алгоритм, а потом уж подбирайте инструмент, каким его реализовать.
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||
| 04.08.2016, 18:32 | ||
|
И вообще, делай все внутри массива и потом отображай его на свою формочку.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 04.08.2016, 19:04 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
||
| 04.08.2016, 19:07 [ТС] | ||
у фигурки и у доски массив сам по себе, кубики, из которых нарисована фигурка, лежат в списке ArrayList и каждый кубик со своими координатами компонент JavaFX, в котором находятся нарисованные кубики сам по себе и своими координатами. из-за этого постоянно теряюсь плюс у меня есть подозрение, что при рисовании нового кубика в стакане, поверх старых рисуются дубликаты на тех же координатах.
0
|
||
| 04.08.2016, 19:07 | |
|
Программирование тетриса Программирование тетриса
Графическая часть Тетриса Статьи по созданию тетриса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|