|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
Объясните реализацию логики тетриса27.07.2016, 11:30. Показов 6347. Ответов 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 / 1575 / 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 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 04.08.2016, 18:10 | |
|
0
|
|
|
4064 / 2672 / 587
Регистрация: 11.09.2009
Сообщений: 9,525
|
||
| 04.08.2016, 18:19 | ||
|
Попробуйте сначала продумать и прорисовать на бумажке алгоритм, а потом уж подбирайте инструмент, каким его реализовать.
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||
| 04.08.2016, 18:32 | ||
|
И вообще, делай все внутри массива и потом отображай его на свою формочку.
0
|
||
|
2083 / 1575 / 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 | |
|
Помогаю со студенческими работами здесь
40
Программирование тетриса Программирование тетриса
Графическая часть Тетриса Статьи по созданию тетриса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|