|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
Объясните реализацию логики тетриса27.07.2016, 11:30. Показов 6155. Ответов 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 / 1574 / 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 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 04.08.2016, 18:10 | |
|
0
|
|
|
4032 / 2644 / 582
Регистрация: 11.09.2009
Сообщений: 9,439
|
||
| 04.08.2016, 18:19 | ||
|
Попробуйте сначала продумать и прорисовать на бумажке алгоритм, а потом уж подбирайте инструмент, каким его реализовать.
0
|
||
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
||
| 04.08.2016, 18:32 | ||
|
И вообще, делай все внутри массива и потом отображай его на свою формочку.
0
|
||
|
2083 / 1574 / 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
Программирование тетриса Программирование тетриса
Графическая часть Тетриса Статьи по созданию тетриса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|