долгое время читатель первый раз постер. Пожалуйста, будьте нежны.
Я жадно создаю игры на VB.net. Будучи хобби-программистом, я отдаю свои игры бесплатно. Поскольку я хобби без формального обучения, я стараюсь научить себя правильным принципам программирования и следовать им при программировании, таком как ООП. Однако есть некоторые вещи, которые я, очевидно, упустил, будучи самоучкой, и, возможно, я узнал бы, если бы получил формальное образование.
Однажды такая проблема, которая действительно была моей проблемой, заключается в том, как разные классы (отныне именуемые объектами) «узнают» друг о друге БЕЗ программирования определенного взаимодействия (оставайтесь со мной здесь ... пожалуйста ...)
Хорошо, представьте, у вас космическая игра и следующие объекты
- clsShip
- clsMissile
- clsAsteroid
- clsSpaceJunk
Теперь каждый из этих объектов имеет закрытые члены Health, X, Y и Z и свойства, которые все унаследованы от clsSpaceEntity для аргументации. Теперь одним из способов программирования столкновения между ними было бы закодировать следующую логику в основном игровом цикле
для каждого корабля в списке кораблей
проверьте каждый clsMissile в списке, чтобы увидеть, сталкивается ли он с ним, и если да, то уменьшить здоровье
проверьте каждый clsAsteroid в списке, чтобы увидеть, сталкивается ли он с ним, и если да, то уменьшить здоровье
проверьте каждый список clsSpaceJunka, чтобы увидеть, сталкивается ли он с ним, и если да, то уменьшить здоровье
... и так далее, и так далее для каждого объекта
Следующий
ect ect ect ...
Теперь это может показаться нормальным, если вы говорите о простом примере выше, но в некоторых из моих игр есть десятки или даже сотни объектов, которые взаимодействуют таким базовым образом.
Теперь мой вопрос к опытным программистам.
Есть ли способ в ООП сделать следующее ...
для каждой вещи, которая наследуется от clsSpaceEntity
проверять все остальные объекты, которые наследуют этот тип (кроме себя), и если они сталкиваются, уменьшить здоровье
Следующий
Такая способность объектов / классов или других объектов «знать» о других, а также о том, как они одинаковы / различны и взаимодействуют, сэкономила бы мне тонны и тонны и тонны кодирования.
Буду очень признателен за любую помощь / помощь или отзывы по этому вопросу. Спасибо за ваше время, простите за долгое чтение.