У вас есть несколько вопросов в одном. Надеюсь, это поможет.
Должен ли каждый объект содержать свою графическую информацию? Как эта информация отображается?
Программисты, как правило, проводят различие между терминами «графика» и «графический интерфейс пользователя» (GUI). Обычно под графикой подразумеваются статические изображения (например, фотографии) или динамические изображения (например, видеоигры), тогда как графический интерфейс пользователя относится к обычным элементам, которые вы видите в приложении, таким как окна, кнопки или меню. Вы имеете в виду графику или графический интерфейс?
Существует несколько уровней абстракции между вашей программой и получением изображения на вашем мониторе. На ПК с Windows это обычно сводится к вызову функций Win32 или DirectX, которые обрабатывают все вещи самого нижнего уровня.
Я мог бы хранить процедуры в объектах и получать графический объект для чтения процедур из объектов, переданных ему.
Вы не должны помещать свои основные функции в графический код или наоборот. Держите их отчетливыми. Это значительно упрощает, скажем, изменение внешнего вида ваших фигур в шахматной игре или изменение правил без изменения пользовательского интерфейса.
Как упомянул Алекс Мартелли, архитектура MVC - это хороший способ отделить бизнес-логику (как она работает) от представления вашего приложения (как оно выглядит). В MVC обычно считается, что представление содержит GUI, который может иметь или не иметь «графику».
Это ООП? Это хорошо ООП?
Мне кажется, что вам нужно лучше понять, что значит объектно-ориентированный дизайн. Поскольку на эту тему существует так много внешних ресурсов, я предлагаю вам это сделать. А пока, может быть, вам стоит просто поэкспериментировать и попробовать разные способы программирования своей игры, а не беспокоиться о том, удачный ли это дизайн. Вы можете понять, что работает хорошо, а что нет - вам не нужно совершенствовать его с первого раза!
В реальном мире, как я узнал, вещи не содержат графики.
На метафизическом уровне, я полагаю, вы правы ... то, что мы видим, это просто представление о том, что вокруг нас, электрические сигналы, генерируемые фотонами, поражающими наши сетчатки. Когда вы пишете свою программу, вы просто пытаетесь генерировать изображения, которые имеют смысл для людей. Я не совсем уверен, где вы могли бы пойти с этим.
Я рисую графику, окрашивая пиксели индивидуально!
Не проще ли использовать какую-нибудь графическую библиотеку, чтобы справиться с этим? Таким образом, вы можете просто делать такие вещи, как DrawCircle (), а не делать все пиксели самостоятельно. Тем не менее, вы можете многому научиться, реализовав собственную низкоуровневую графическую библиотеку ... просто помните, что вы будете тратить много времени на библиотеку, а не на саму игру.