Я пишу игровой движок на Java для карточной игры для двух игроков, для которой мои студенты собираются писать AI-игроков.
Игроки AI по очереди играют в карты на свое «поле».«стола» перед ними.Они могут атаковать картой со своего поля карту в поле другого игрока.Карты могут быть лицевой стороной вверх или лицевой стороной вниз.
Класс GameEngine позволяет игроку ИИ принять свой ход, вызвав метод GamePlayer.TakeTurn (GameEngine eng).Игрок может спросить игровой движок о поле защищающегося игрока, чтобы игрок мог принимать решения, основываясь на количестве карточек там и на том, какие из них открыты.Допустим, этот метод является GameEngine.GetDefendingField ()
Теперь я хочу убедиться, что атакующий игрок не может изменить поле защищающегося игрока или карты на поле защищающегося игрока и что атакующий игрок может идентифицировать толькооткрытые карты на поле защищающихся игроков.
У меня есть классы для Card, Field (ArrayList of Cards), GamePlayer и GameEngine.Есть ли какой-нибудь способ создать интерфейс для поля, чтобы GameEngine мог вернуть поле защищающегося игрока, но атакующий игрок не сможет его изменить?и без возможности атакующего игрока преобразовать поле защищающегося игрока во что-то, что можно изменить.
Могу ли я сделать так, чтобы GameEngine.GetDefendingField () возвращал доступный только для чтения интерфейс к полю, который нельзя преобразовать в поле?
тиа,
Ш-