目前在游戏中,它会询问某些问题,例如,您是否收集了所有 key 、杀死了所有 Boss 等。 但是当它接近结尾时,它会询问“您想使用哪个键?”。它做得很好,但是一旦它到达门部分,它实际上并没有得到 key 的值,它只是输出 0
主要代码
public static int possibleKey()
{
SetnGet sng = new SetnGet();
int keys;
do
{
System.out.println("Which key would you like to use?");
keys = in.nextInt();
}
while(keys != 1 && keys != 2 && keys != 3);
return keys;
}
public static int possibleLevel()
{
SetnGet sng = new SetnGet();
System.out.println("Which door would you like to enter? - 1, 2, 3 or 4");
int level;
if(sng.accessibleKey() == 3)
{
do
{
System.out.println("You have all three keys, you have complete access");
level = in.nextInt();
}
while(level != 1 && level != 2 && level != 3);
}
else
{
do
{
System.out.println("You have no level access");
level = in.nextInt();
}
while(level != 1 && level != 2 && level != 3 && level != 4);
}
return level;
}
SetnGet类的设置和获取
private int possibleKey;
private int possibleLevel;
public int setPossibleKey()
{
return possibleKey;
}
public void setPossibleKey(int possibleKey)
{
this.possibleKey = possibleKey;
}
public int getPossibleLevel()
{
return possibleLevel;
}
public void setPossibleLevel(int possibleLevel)
{
this.possibleLevel = possibleLevel;
}
最佳答案
方法 possibleLevel()
创建了 SetnGet
类的一个实例 (SetnGet sng = new SetnGet();
),紧接着, 读取实例的 int
类型字段 (sng.accessibleKey()
)。这样读取的结果当然是 0,因为这是 int
类字段的默认值,您永远不会为您的字段设置任何其他值。因此,您总是会转到 else
并看到“您没有级别访问权限”消息。
要解决此问题,您可以做的是将 SetnGet sng = new SetnGet();
从 possibleLevel()
移动到类然后确保将 possibleKey()
调用的结果设置为它,如下所示:
public class Main {
private static Scanner in = new Scanner(System.in);
private static SetnGet sng = new SetnGet();
public static void main(String[] args) {
int selectedKey = possibleKey();
sng.accessibleKey(selectedKey);
int level = possibleLevel();
}
public static int possibleKey() {
// your initial implementation of the method
}
public static int possibleLevel() {
// your initial implementation of the method, but
// without the "SetnGet sng = new SetnGet();" line
}
}
SetnGet
类如下所示:
class SetnGet {
private int accessibleKey;
int accessibleKey() {
return accessibleKey;
}
void accessibleKey(int accessibleKey) {
this.accessibleKey = accessibleKey;
}
}
这将解决您最初的问题。然后可以考虑进一步重构代码,例如使用方法参数(而不是共享类字段)在方法之间传递数据,去掉多余的 SetnGet sng = new SetnGet();
行来自 possibleKey()
方法,等等。
关于java - 创建一个基于文本的游戏,我被卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47490537/