Я не уверен, что излагаю здесь очевидное, но вам нужен общедоступный аксессор для вашего Rectangle в вашем классе линейных кораблей. Если вы не понимаете, что это значит, вам нужно почитать основы объектно-ориентированного программирования. На данный момент, однако, если вы измените код вашего класса линкора, чтобы сказать
public Rectangle playerBattleshipRectangle;
... затем вы можете получить к нему доступ из ссылки вашего maingame.cs на объект игрока, используя
player.playerBattleshipRectangle
(при условии, что ваш игрок является классом линкора. Если это не так, вам нужно быть более ясным в своем вопросе и опубликовать исходный код класса для любого класса, которым является ваш игрок. Вы говорите «player.cs», но публикуете класс линкора - что это? Если имя файла - player.cs, но имя класса на самом деле - линкор, вы должны изменить одно из них так, чтобы они были одинаковыми. Практикуйтесь хорошо, легко понимайте имена классов и переменных, будьте как можно более описательными без слишком многословно).
По умолчанию, если вы не включаете модификатор области (открытый, закрытый, защищенный, внутренний ...) перед полями-членами в классе, тогда они устанавливаются как закрытые и недоступны для других классов.
Вы также можете использовать Свойства, чтобы лучше контролировать доступ к полям членов класса. Например,
private int health;
public int Health
{
get { return health; }
set { health = MathHelper.Clamp(health, 0, 100); }
}
этот код содержит частное (только этот класс может получить к нему доступ) определение состояния объекта. Он также предоставляет другим классам общедоступный способ «увидеть» здоровье этого объекта и изменить его. Как вы можете видеть в разделе 'set', когда другой класс устанавливает состояние этого объекта, он автоматически фиксируется между 0 и 100. Вы также можете полностью опустить 'set', и никакой другой класс не сможет изменить состояние, они могут видеть только это.
Это все основы объектно-ориентированного программирования на C #. Я настоятельно рекомендую вам начать с основ, если вы их не знаете. Вы не можете успешно создать игру, не понимая области действия, свойств, наследования, экземпляров объектов и ссылок, и это лишь некоторые из них.
Краткое резюме некоторых соответствующих определений из этого поста:
- поле - иначе переменная; базовая черта, хранящаяся в классе как «член». т.е. "здоровье" или "ограничивающий ящик".
- свойство - метод доступа к полю, который полезен для определения того, как внешние классы могут видеть и изменять его.
- экземпляр - «реальный» объект, который хранится в памяти. класс определяет только поведение объекта; он должен быть превращен в экземпляр, чтобы объект действительно существовал. Такой класс, как «Морской бой», может использоваться для создания неограниченных экземпляров линейных кораблей в памяти. Когда вы говорите "Морской бой", игрок = новый Морской бой (), вы создаете экземпляр Морского корабля под названием "игрок".
- private - размещение 'private' перед полем означает, что только этот класс может его видеть.
- public - размещение 'public' перед полем означает, что все классы могут его видеть.
- protected - размещение 'protected' перед полем означает, что только этот класс и все классы, унаследованные от этого класса, могут видеть его.
- internal - размещение 'internal' перед полем означает, что только классы в этом пространстве имен 'видят его.
Я прошу прощения, если я недооцениваю ваше знание предмета.