我正在尝试制作一个简单的故事冒险文本游戏。我创建了一个名为'key'的布尔值并将其设置为false。在单独的方法中,如果用户键入1,则应将键布尔值设置为true,并将值true返回到start方法。但是,我不确定我会怎么做。以下是两种方法的代码:
开始方法:
static void start() throws IOException {
boolean key = false;
Scanner in = new Scanner(System.in);
System.out.println("You are in a dark room with 3 doors.");
System.out.println("Pick 1. 2. or 3.");
int number;
number = in.nextInt();
if(number == 1) {
room1();
}
}
}
将key的值更改为true的方法:
static void room1() throws IOException {
Scanner in = new Scanner(System.in);
System.out.println("You have picked room 1.");
System.out.println("You find a dead man's corpse.");
System.out.println("Do you: 1. Loot the corpse or 2. Go back to the starting area");
int number;
boolean key;
number=in.nextInt();
if(number == 1) {
System.out.println("You find a key to another door, perhaps back at the starting area?");
key = true;
start();
}
}
非常感谢任何帮助!
答案 0 :(得分:0)
在key
方法中声明start
的问题是它超出了该方法之外的范围。您无法通过room1
等其他方法访问它。
要将key
变量保留在范围内,必须在任何方法之外将其声明为类变量,但在类本身内部。它必须是static
,因此您的static
方法可以访问它。
答案 1 :(得分:0)
只是想更广泛一点。在你的游戏中,你每个地下城至少要有一把钥匙,因此拥有一个私密的“钥匙”阵列会更有意义,并使用访问器来测试你的角色是否有地下城钥匙。
希望有所帮助。答案 2 :(得分:0)
正如人们已经回答的那样,将键变量更改为全局,这意味着在类的开头声明该变量,然后在您的方法中使用它。
示例:的
public class Example {
public static boolean key = false;
}
此外,我鼓励您使用switch-case来做出您即将做出的选择:
int number;
number = in.nextInt();
switch(number) {
case 1:
room1();
break;
case 2:
room2();
break;
default:
break;
}