|
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 70
|
|
Объясните реализацию логики тетриса27.07.2016, 11:30. Показов 6402. Ответов 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
|
|
|
4069 / 2677 / 587
Регистрация: 11.09.2009
Сообщений: 9,560
|
||
| 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 | |
|
Программирование тетриса Программирование тетриса
Графическая часть Тетриса Статьи по созданию тетриса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|