В вашем методе Move вы вызываете Gun.Move.
Gun - это класс, а не объект.Поэтому вы пытаетесь вызвать Move на «чертеже» оружия, а не на самом объекте оружия.
Когда вы создаете экземпляр класса PlayerShip, вы создаете два экземпляра оружия.Если я прав, предполагая, что вы хотите, чтобы класс PlayerShip «имел» два оружия.Вы можете задать классу PlayerShip две частные переменные оружия, чтобы они были доступны методу перемещения.
public class PlayerShip
{
private int position;
private Gun gun1;
private Gun gun2;
// rest of code
}
После этого вы можете получить доступ к объектам оружия, которые принадлежат вашему объекту PlayerShip.
Создайте конструктор и метод перемещения следующим образом:
public PlayerShip()
{
position = Global.promptInt("Player position: ");
gun1 = new Gun(position - 1, 5);
gun2 = new Gun(position + 1, 5);
}
public void Move(int distance)
{
position = position + distance;
gun1.Move(distance);
gun1.Move(distance);
}
Вы получали статическую ошибку ссылки, когда пытались вызвать метод класса Gun, а не отдельных экземпляров.
Ключевое слово static означает, что оно одинаково для каждого экземпляра объекта.
Надеюсь, это было полезно, трудно начать понимать, как объекты работают наНачните.
Продолжайте практиковать!