Djaler
@Djaler
Сеньор-помидор

Как реализовать архитектуру игры?

Решил сделать очередную версию игры "Жизнь", на этот раз на Qt (до этого делал на чистом С). Не пойму, как правильно это сделать. Очевидно, что нужно применять объектно-ориентированный подход и представлять особей в виде объектов определенного класса, размещенных внутри какой-то таблицы или матрицы. Но как реализовать взаимодействие этих особей? То есть, особь должна знать о том, что находится рядом с ней, в соседних ячейках таблицы.

Upd. ООП хочу использовать, так как собираюсь делать более продвинутую версию, со всякими характеристиками, мутациями, скрещиванием и т.д.
  • Вопрос задан
  • 2573 просмотра
Пригласить эксперта
Ответы на вопрос 5
lorka
@lorka
Game-develop
Создать класс "бактерии", с указанием координат, "уровня", уникального ID(пригодится в будущем). В майн классе создать коллекцию(наподобие Map) и процедурой проверки условий "жизни", добавить таймер. В Map заносить с ключом типа "координатаХ-координатаУ"(по этому ключу находить "соседей"). В таймере цикл перебора коллекции, с отрисовкой результата в конце - визуализация по вкусу(хоть OpenGL). Для возможностей "расширения" и "мутации" - желательно уже использовать родительский и дочерние классы, тогда можно описать различные типы "монстров" и их уникальное поведение.
Ответ написан
Комментировать
gbg
@gbg
Любые ответы на любые вопросы
Создаете сетку в в виде массива экземпляров класса Cell.
Потом привязываете по сигналам каждую ячейку к ее соседям методом сonnect.

Все ячейки привязываете слотом tick к таймеру. В этом слоте организуете обработку тика и опрос соседей.

От всех ячеек привязываете сигнал draw к чему-нибудь таблицеобразному. Чтобы рисовалось.
Ответ написан
Комментировать
@wrench10x12
Очевидно, что нужно применять объектно-ориентированный подход и представлять особей в виде объектов

Совершенно не очевидно. Громоздить объект вокруг, фактически, булевой переменной - преступление против здравого смысла.
Достаточно завернуть в объект саму матрицу.
Ответ написан
Комментировать
@mamkaololosha
Очевидно, что нужно применять объектно-ориентированный подход

ООП ради ООП.
Ответ написан
Комментировать
donkaban
@donkaban
Умею рисовать тени
Игра Конвея - это процесс. А не набор объектов :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы