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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2009, 00:29   #1
Iceman
Форумчанин
 
Регистрация: 08.07.2007
Сообщений: 154
Сообщение Тетрис! Логика и возможности.

Всех с новым годом!
Может ли кто нибудь написать или дать ссылку на принцип разработки тетриса.
Я не имею ввиду алгоритм, скрипт или чтото вроде етого. Хотелось бы услышать ваши идей по возможностям улутшениям. например контроль сложности или дополнительные фигуры.

Хотя буду благодарен если выложите мануал по созданию тетриса.
(Не на делфи а общие принципы)
Iceman вне форума Ответить с цитированием
Старый 02.01.2009, 00:35   #2
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

вот исходник тетриса... глянь, может разберёшся )
http://maxxdelphisite.free.fr/dn.php3?id=25
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 02.01.2009, 00:39   #3
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

се очень просто. Но есть два существенно разных подхода к описанию фигур. Первый заключается в создании матрицы 4х4, описывающей фигуру, где заполненные клетки фигуры помечены 1, например, а незаполненные - 0. Другой способ (он на мой взгляд более эффективен) - задание относительных координат каждой клетки фигуры в виде массива пар чисел (x,y). При этом размер фигуры не ограничен размером матрицы. Да и поворачивать координаты быстрее, чем матрицу (поворот на 90 градусов всех точек вокруг нулевой реализуется очень и очень просто). Сравнивать пересечения фигуры с дном стакана также удобнее в виде координат. Разумеется, стакан хранить удобнее в виде матрицы.
Алгоритм примерно следующий:
0. Обнуляем "положение фигуры" и "предыдущее местоположение фигуры" относительно вершины стакана.
1. Проверяем клетки в стакане под каждым элементом фигуры
2. Если хотя бы одна клетка заполнена -> отображаем фигуру по предыдущему положению в стакан, переход в 6
3. Если нет, перемещаем фигуру.
4. Сохраняем предыдущее положение фигуры, увеличиваем координату фигуры относительно вершины стакана. На данном этапе также осуществляется взаимодействие с пользователем.
5. Переходим на 1
6. Ищем заполненные ряды в стакане сверху вниз. В случае нахождения, смещаем все клетки над рядом ниже на одну а в вершину стакана записываем пустые клетки и увеличиваем счет (очки).
7. Если количество очков не изменилось и фигура не сместилась относительно начального положения -> переход 9
8. переход в п. 0.
9. конец игры, стакан заполнен.

Отображение фигуры в стакан ("отпечаток") осуществляется только в п.2.

Впервые реализовал "just for fun" данный алгоритм в 16 лет на бейсике (хотя в то время увлекался ассемблером и С/С++) в качестве школьного задания (преподаватель знала только бейсик), затем сделал то же самое на С (лет в 17). Больше писать тетрисов не доводилось: есть задачи посложнее.

P.S. в алгоритме не описан поворот фигуры.
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 02.01.2009, 19:53   #4
Iceman
Форумчанин
 
Регистрация: 08.07.2007
Сообщений: 154
Сообщение

Цитата:
Сообщение от TaTT DoGG Посмотреть сообщение
вот исходник тетриса... глянь, может разберёшся )
http://maxxdelphisite.free.fr/dn.php3?id=25
Я Же сказал не исходник. А за второй пост спасибо!

Я думал чтото вроде опыта для тетриса сделать но не имею понятия на что его тратить.
Iceman вне форума Ответить с цитированием
Старый 04.01.2009, 01:56   #5
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

первый пост это если что-нибудь подсмотреть
а второй эта сама логика )
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать тетрис! sid Gamedev - cоздание игр: Unity, OpenGL, DirectX 21 06.05.2013 20:32
Логика монстра(ов) ChukCha Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 19.08.2008 15:31
USB логика на выходах StartMis Общие вопросы Delphi 2 26.05.2008 18:03
Старый добрый тетрис Format C: Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 05.07.2007 16:02
массив и тетрис sid Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2007 14:41