Overload

Опубликовано: Последние правки:
Опубликовано: Последние правки:

Логическая игра с прыгающими накрывающими друг друга фишками стала идеей фикс. Сначала проба на Паскле, потом переписывание всех функций на Си, далее продумывание классов, и теперь игра предстает на Си++. Спустя года 3 несколько методов просто поражают своей логикой - а=1, "б" определяется в условном операторе, а потом используется условие (б-а)<0. Нужно быть не в себе, чтобы такое написать. Но в целом код продуман, хотя иерархия объектов, все еще страдает.

Идея экспериментов с ООП - создание framework'а для удобного написания новых логических игр. Вся программа разделяется на модули. Грубо говоря, это отдельно компилируемые файлы, но по сути это должны быть классы, вид которых определяется интерфейсами. Для draw и logic использование классов пока необосновано и в коде выглядит притянутым за уши. Проверка framework'а будет заключаться в изменении процесса игры. В игре фишки, лежащие на одной клетке, превышая некоторый лимит, перескакивают на соседние. Что если разлетание осуществить как некоторое приложение силы в контексте физического движка, который обсчитывает объекты игрового мира. Плюс к этому добавить наклон поля, возможность столкновения фишек в воздухе.

  • main - главный файл, точка входа. Использую glut. Здесь описывается взаимодействие с юзером и используется класс для рисования окружения.
  • draw - классы для рисования окружения (не объектов: рисование объектов входит в штатный метод render). Этот модуль нужен для отрисовывания объектов, которые будут взаимодействовать по описанной отдельно логике. Рендерим объекты, передаем изменения, вызванные main логической части, и получив изменения для объектов рендерим их заново.
  • logic - логика взаимодействия объектов. Как ходит конь, когда игра начинается и когда она заканчивается, как ход переходит к другому игроку. Искусственный интеллект находится здесь же.
  • elements - главные объекты в игре. Здесь лежит их иерархия, методы по взаимодействию с "пользовательским" типом. Рендер входит в классы объектов, хотя это спорная часть. Так как логичнее было бы рендер отдать draw модулю. Это возможно при переходе с класс.render() на draw.render(класс объект).