2017-01-10 203 views
0

我正在製作一個小文本遊戲。開始對話在我的主要(靜態)方法中。從那裏,它會根據您的選擇將您發送到其他方法。需要在靜態和非靜態方法中使用實例

現在我想我需要有一個我的班的實例,這個工作。

例如:

Program p = new Program(); 

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

在那些其他的方法也有全局變量,將改變。

所以主要方法上面有:

public bool hasItem = false; 

所以房間1()會是什麼樣子,

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

我知道我擰東西了主要方法。我是否在主方法內部或外部聲明實例「p」?我已經嘗試了兩種方式,但都得到了錯誤。

編輯:我最終宣佈了一個靜態的「程序」之外的主要方法在其他地方使用。謝謝您的幫助!

+1

我沒有跟隨你的問題。問題是你不知道在哪裏聲明'hasItem'?我建議你將它聲明爲表示事物(房間,世界,玩家,其他)的對象的成員變量,其實際上*有*項*。 –

+0

我認爲這是我通過在方法之外聲明它所做的。情況並非如此嗎? – coinbird

回答

2

首先,您可以在主要方法之外創建一個靜態的Program,或者根據您的體系結構在主要方法中聲明一個程序。

其次,您不必從實例方法中引用您的實例。只需使用字段名稱即可。像這樣:

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

,如果你想明確一下,你可以使用this.hasItem


或者更好的是,讓一個全新的類來保持你的狀態。有實例成員在main方法的類是笨拙的設計。

+0

這解決了我的問題。謝謝! – coinbird