| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Игра для DOS |
| Автор: MacTep 18.2.2004, 00:27 |
| РЕБЯТ, привет! Тут такая проблемка! Нужно мне сделать курсовик! Использовать можно любой язык программированию для DOS (Pascal, Assrmbler, C/C++). Задача такая: нужно написать Тетрис. У меня проблема в алгоритме. Не могй понять, как сделать так, чтобы фигурки тетриса ложились друг на друга, а не зарисовывались на экране. Как это сделать? Может кто знает? Заранее благодарю! |
| Автор: oleg1973 18.2.2004, 01:47 |
| сделать битовый массив типа 10000000001 10000000001 10000000001 10001110001 10000100001 10000100001 10000000001 11111111111 какбы стакан соответственно нолики " прозрачные" ну и проверять при движении фигурки где там она двигается по ноликам или нет вывод спрайтов на экран тоже легко будет сделать |
| Автор: MacTep 18.2.2004, 12:24 |
| Благодарю, oleg1973, попробую! А еще что-нибудь, кто-нибудь предложит? |
| Автор: PROme 18.2.2004, 19:36 |
| А что еще? Классический метод задания лабиринта (хоть и необычного). Используй для обозначения самих фигурок любой символ, отличный от 1 и 0 и у тебя небудет проблем. Определяешь текущие: - ширину нижней части фигуры; - положение (не центр, а, например крайней левой точки); Ну, а если дельше нет преград, опускаешься на уровень ниже и снова проверяешь. Когда фигура достигла препятствия - останавливаешь ее (заносишь в массив), и начинаешь проверять - нет ли заполненых рядков, если есть - уничтожаешь их, зачисляешь очки или что там. Также следует проверить, если фигура уперлась вниз и вверх, значит гаме овер - ю луз (для этого можно расширить верхние границы, и проверять после остановки, не лежит ли там фигура, например) ххххххххххххххххх ххххххххххххххххх ххххххххххххххххх 100000000000001 100000000000001 100000000000001 100000000000001 100000000000001 100000000000001 100000000000001 100000000000001 111111111111111 Но лучше будет просто соотносить расстояние, оставшееся свободное до "потолка" и высоту фигуры, которая должна выпасть (массив займет меньше памяти). Также следует сделать управление фигурами - поворот и ускорение, думаю я этим проблем не будет. ЗЫ: разумеется лучше использовать не стандартные массивы, а выделить себе область памяти и юзать ее - быстрей будет; ЗЫЗЫ: скорее не быстрей, даже самый забитый комп 20 летней давности потянит это без проблем (не считая визуализации), просто на оценку повлияет, ИМХО. Удачи. Будут вопросы - пиши, постараемся помочь. |
| Автор: MacTep 18.2.2004, 23:19 |
| PROme, вот это ты расписал. Просто ништяк! Огромное спасибо, многое сразу стало понятно! |
| Автор: MacTep 20.2.2004, 23:23 |
| PROme, а еще такой вопрос! Как сделать так, чтобы можно было и фигуре свободно падать и пользователю свободно ее двигать? Помоги! |