2017-01-10 5 views
0

Я делаю небольшую текстовую игру. Начальный диалог находится в моем основном (статическом) методе. Оттуда он отправляет вам другие методы в зависимости от ваших вариантов.Необходимо использовать экземпляр в статических и нестатических методах

Теперь я думаю, что для этого мне нужен экземпляр моего класса.

Например:

Program p = new Program(); 

if(stuff){ 
    p.room1(); 
} 
else{ 
    p.room2(); 
} 

В этих других методов существуют глобальные переменные, которые будут изменяться.

Так выше основного метода есть:

public bool hasItem = false; 

Так room1() будет выглядеть,

public void room1(){ 
    if(stuff){ 
     p.hasItem = true; 
    } 
} 

Я знаю, что я что-то с основным методом завинчивания. Я объявляю экземпляр «p» внутри или вне основного метода? Я пробовал оба, но получаю ошибки в обоих направлениях.

Редактировать: Я закончил объявление статической «Программы» вне основного метода для использования в другом месте. Спасибо за помощь!

+1

Я не следую вашему вопросу вообще. Проблема в том, что вы не знаете, где объявить 'hasItem'? Я предлагаю вам объявить его как переменную-член объекта, представляющего предмет (комнату, мир, плеер, что угодно), на самом деле * имеет * элемент *. –

+0

Я думал, что это то, что я сделал, объявив его вне метода. Разве это не так? – coinbird

ответ

2

Прежде всего, вы можете создать статический Program вне вашего основного метода или объявить программу внутри вашего основного метода в зависимости от вашей архитектуры.

Во-вторых, вам не нужно ссылаться на свой экземпляр из ваших методов экземпляра. Просто используйте имя поля. как так:

public void room1(){ 
    if(stuff){ 
     hasItem = true; 
    } 
} 

вы можете использовать this.hasItem, если вы хотите быть четко об этом.


Или еще лучше, сделать новый класс, чтобы сохранить свое состояние в. Имея член экземпляра в классе с основным методом является неуклюжим дизайном.

+0

Это решило мою проблему. Спасибо! – coinbird

 Смежные вопросы

  • Нет связанных вопросов^_^