Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2007, 19:46   #1
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
По умолчанию Старый добрый тетрис

Всем привет.

Решил, вот на днях написать тетрис.
Но возник вопрос:
Как правильно сделать падение фигур и уничтожение уже собравшейся линии.

Делал это примерно так (исходник показать не могу - корявый очень):
1. Вычисляю высоту фигуры в зависимости от её поворота.
2. Проверяю координаты (If Y+H>20 Then касание)
3. Переведение текущей фигуры в пасивное состояние, обнуление координат, старт новой фигуры.

Иногда фигурки погружаются на одну клетку вглубь (за Image).
Затычка с касанием и всем что с ним связяно.

Помогите, кто знает как это сделать
Заранее спасибо.
Format C: вне форума Ответить с цитированием
Старый 21.06.2007, 21:32   #2
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Наверно правильней сделать для фигуры "движение внутри массива". Двумерный массив, в простейшем случае элементы двоичные - "свободно/занято". Проверять всё станет гораздо проще и быстрее. Даже если фигуры должны двигаться плавно, а не скачками, то все-равно можно сделать так, чтобы несколько точек на экране соответствовало одному элементу массива.
Т.е. все действия идут с массивом, а на экран выводится результат.
Jeni вне форума Ответить с цитированием
Старый 21.06.2007, 21:42   #3
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
По умолчанию

2Jeni:
Я пытался так сделать, проверял циклами, но прога с треском слетала.

Можешь по пунктам расписать перемещение и проверку, а то у меня бошка уже мало чего соображает (сессию сдавал).
Format C: вне форума Ответить с цитированием
Старый 22.06.2007, 10:39   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

насчёт массива - это правильно, сколько знал людей, кто тетрисы писал - все использовали массив - как логическую структуру поля. А визуальное отображение - лучше StringGrid (DrawGrid) я думаю не найти.
zetrix вне форума Ответить с цитированием
Старый 22.06.2007, 17:38   #5
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
По умолчанию

Вот что уменя получилось.
Версия ещё не рабочая (в плане поиграть).

Не пойму как определить касание фигурой какого либо объекта.
Подскажите кто что знает. С массивом тоже не особо понятно.
Вложения
Тип файла: rar Tetris.rar (4.9 Кб, 90 просмотров)
Format C: вне форума Ответить с цитированием
Старый 25.06.2007, 12:33   #6
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
По умолчанию

Ну что никто не знает?

Тетирисы ведь многие делали
Format C: вне форума Ответить с цитированием
Старый 25.06.2007, 13:26   #7
Romanus
Кодер
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 271
По умолчанию

Зы раньше была такая оболочка Dos Navigator и в ней был тетерис а эта оболочка была с открытыми кодами поищи может и нароешь их.
Romanus вне форума Ответить с цитированием
Старый 25.06.2007, 19:06   #8
Tituslon
 
Регистрация: 25.06.2007
Сообщений: 4
По умолчанию

Ой.Помню заигрывался тетрисом ночи напролет))) А щас и написать самому можно.Кул.
Tituslon вне форума Ответить с цитированием
Старый 01.07.2007, 21:59   #9
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
Восклицание

Возможно я не правильно объяснил суть проблемы: мне нужны не исходники, а принцип и алгоритм складирования фигурок на поле.
Исходники я многие скачивал, но ничего не понял. Уж как-то всё там сложно. Свой код мне ближе.
Объясните мне алгоритм, остальное я как-нибудь сам напишу.
Format C: вне форума Ответить с цитированием
Старый 01.07.2007, 22:42   #10
Romanus
Кодер
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 271
По умолчанию

2Format C: а что тут сложного. Есть определенный набор фигур состоящий из четырех элементов. Эти фигуры последовательно даются в руки игроку но при этом они падают с определенной скоростью. Также пользователь может вращать фигуры вокруг собственного центра тяжести. Столкновение с уже поставленными фигурами определяется обычной сортировкой. Также определяется не заполнилась одна из строк стакана если да то удаляем ее и опускаем верхние ряды. Также определяем не задела ли текущая летящая фигура верх стакана в таковом случае завершаем игру и записываем в таблицу рекордов (если таковая нужна) результат.
Вроде все просто.
Romanus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать тетрис! sid Gamedev - cоздание игр: Unity, OpenGL, DirectX 21 06.05.2013 20:32
Старый серер перенести на новый, а старый заглушить, при этом не потерять настроек. Spartak Помощь студентам 1 28.01.2008 12:07
массив и тетрис sid Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2007 14:41