Блог. Двадцать пять лет Делфи-практики
В этом блоге я буду публиковать ответы на вопросы, которые постоянно приходится повторять на форуме.
Здесь можно это сделать более развернуто и спокойно.
Все, что здесь написано, не является истиной в последней инстанции, скорее, это результат моих размышлений над архитектурой проектов, маленьких и больших, которых я сделал на Делфи более дюжины.
Начав с Делфи-2 двадцать пять лет назад, я прошел все версии, испробовал массу технологий, включая работу с БД, с графикой DirectX, связью с серверами и интернетом, разработку на Андроид и IOS, и многое, многое другое.
________________________________________________________________________________ ____
P.S. все, о чем здесь написано, всего лишь измышления из головы.
совпадения с реальными людьми и фактами случайны.
В этом блоге я буду публиковать ответы на вопросы, которые постоянно приходится повторять на форуме.
Здесь можно это сделать более развернуто и спокойно.
Все, что здесь написано, не является истиной в последней инстанции, скорее, это результат моих размышлений над архитектурой проектов, маленьких и больших, которых я сделал на Делфи более дюжины.
Начав с Делфи-2 двадцать пять лет назад, я прошел все версии, испробовал массу технологий, включая работу с БД, с графикой DirectX, связью с серверами и интернетом, разработку на Андроид и IOS, и многое, многое другое.
________________________________________________________________________________ ____
P.S. все, о чем здесь написано, всего лишь измышления из головы.
совпадения с реальными людьми и фактами случайны.
Как писать игры
Без сомнения, первое, что нужно делать при разработке новой игры - это, конечно, рисовать заставку. Но второе - вы, вероятно, удивитесь, но это проектирование, а не попытка накидать компонентов на форму и бегом на форум писать вопрос "У меня не работает, что делать". Вы должны создать МОДЕЛЬ ДАННЫХ - придумать все объекты, которые будут принимать участие в вашей игре, и перечислить, хотя бы предварительно, их свойства. Например, с ходу: Игровое поле (Размер, масштаб, смещение окна программы относительно карты игрового мира) Еще поле содержит ссылки на остальные объекты: Счетчики призов, сбитых объектов, прошедшего времени, оставшегося времени, еще чего-нибудь. Объекты на поле - стены, пули, главный герой и т.д. Чаще всего требуется еще и класс - контейнер, список для каждого типа объектов. Например
В файле с формой, которая будет отображать игровое поле, поместим имя этого модуля в Uses; Далее определим главный таймер программы. Обработчик этого таймера будет центральной частью нашего приложения.
1.ProcessKeybAndMouse(); тут при помощи GetAsyncKeyState или GetKeyboardState мы узнаём, какие кнопки на клавиатуре и мыши сейчас нажаты 2.ProcessObjects(); в соответствии с нажатыми кнопками и другими параметрами изменяем поля объектов модели проверяем пересечения и коллизии, изменяем номер кадра мультипликации объекта и т.д. 3.Redraw(); перерисовка текущего состояния всей модели. В начале игры можно завести глобальную переменную класса Игровое поле, которая в конструкторе создаст и остальные объекты нашей модели данных и даже загрузит из файла какие-нибудь сохраненные свойства. Инициализируем начальное состояние всех объектов и стартуем. Далее при старте игры стартует главный таймер и начинает происходить вся вышеописанная обработка. В приложении вы можете найти пример игры, реализующей все эти идеи. |
Всего комментариев 2
Комментарии
-
Простите, а зачем Redraw();?
Запись от Lorrrd размещена 20.11.2019 в 23:34 -
Запись от DenNik размещена 27.02.2020 в 14:52