2017-01-10 167 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