简单终端 "game"

Simple terminal "game"

所以我一直在尝试制作一个简单的基于文本的终端游戏来让自己更熟悉使用 c#,但我不知道如何让玩家回到开头以便他们可以解锁门,这是我试过的。对于您即将看到的意大利面条代码,我深表歉意:

bool IsGameRunning = true;
bool hasKey = false;
if(isGameRunning == true){ Start();}
if(isGameRunning == true && Start() == "go forward" && hasKey == false){

while(true){
Middle();
if(Middle() == "go back"){
Start();
break;
}
}
} 

 else if(isGameRunning == true && Start() == "go left"){
while(true){
hasKey = true;
Key();
 if(Key() == "go back"){
Start();
break;
 }
 }} else if(isGameRunning == true && Start() == "go forward" && hasKey == true){
Console.WriteLine("You tried the key...THE DOOR IS STILL LOCKED!!!");
 }
//methods
static string Start(){
    
while(true){
Console.WriteLine("You are in a dark room, what do you do?");
   string? input = Console.ReadLine();
if(input == "look around")
{
Console.WriteLine("It is too dark to look around.");}



 else if(input == "go left"){

return "go left";
}
else if(input == "go forward"){
return "go forward";
} else{
Console.WriteLine($"I don't know what '{input}' means.");}
}
}
static string Middle(){
while(true){
Console.WriteLine("You decided to pick a direction and go forward.You stumbled upon a door, the door is locked.");
string? input = Console.ReadLine();
if(input == "go back"){
Console.WriteLine("You decided to return back from where you came.");
return "go back";
} else {
    Console.WriteLine($"I don't know what '{input}' means.");
}
}
}
static string Key(){
while(true){
Console.WriteLine("You decided to pick a direction and go left.You found a key!");
string? input = Console.ReadLine();
if(input == "go back"){
Console.WriteLine("You decided to return back from where you came.");
return "go back";} else{
Console.WriteLine($"I don't know what '{input}' means.");
}

}
}

我不知道我在想什么。

很难通过代码的格式化方式找出您想要修复的确切问题,但希望此信息能让您将其重写为可修复的更清晰状态。

即使在 if 语句内部,调用 Middle() 函数也会 运行 该函数的所有代码。所以基本上这个(下面的代码)是 运行ning Middle() 两次,并且只检查 if 语句中的 return 值。

Middle();
if(Middle() == "go back"){

如果您想在这样的 if 语句中使用 return 值,请尝试调用该函数一次并将 return 值分配给您可以检查的变量。像这样:

string middleInput = Middle();
if (middleInput == "go back") {

或者像这样更令人困惑但有效的方式:

if (Middle() == "go back") {

也非常推荐使用 IDE(集成开发环境),例如 Visual Studio、Visual Studio 代码或 Jetbrains 的 Rider。这将使编写干净的代码变得容易得多。