2014-09-09 3 views
0

Я пишу текстовую игру на C# и в основном.Позволяет конечному пользователю второй шанс?

if (DoorHallwayMB1 == "door") 
{ 
    Console.WriteLine("You open the rusty door to reveal a janitor's closet, you quickly stock up \non ammo, and return to the Hangar."); 
} 

if (DoorHallwayMB1 == "corridor") 
{ 
    Console.WriteLine("You walk down the corridor and find some ammo forr your pistol. You return to the hangar"); 
} 
else 
{ 
    Console.WriteLine("invalid. Make sure you type either 'corridor' or 'door'"); 
} 

Обратите внимание, что если инструкция else завершена, программа завершается. Как мне сделать так, чтобы он возвращался к началу инструкции if?

+1

Обратите внимание, что вам нужно 'еще if' для коридора отделения, в противном случае пользователь получит«недействителен Убедитесь, что ...». если он или она наберет «дверь». –

ответ

1

Вы хотите цикл:

bool valid = false; 
while(!valid) 
{ 
    //get input 
    if(/*valid input*/) 
    { 
     //do whatever 
     valid = true; 
    } 
} 
0

Вам нужен цикл:

while(true) 
{ 
    //DoorHallwayMB1 = .... 
    if (DoorHallwayMB1 == "door") 
    { 
     Console.WriteLine("You open the rusty door to reveal a janitor's closet, you quickly stock up \non ammo, and return to the Hangar."); 
     break; //exit loop 
    } 
    if (DoorHallwayMB1 == "corridor") 
    { 
     Console.WriteLine("You walk down the corridor and find some ammo forr your pistol. You return to the hangar"); 
     break; // exit loop 
    } 
    else 
    { 
     Console.WriteLine("invalid. make sure you type either 'corridor' or 'door'"); 
    } 
} 
+0

СПАСИБО! * Интернет обнять * – user2730877

+0

на самом деле ... он просто пишет «недействительным. удостоверьтесь, что вы набираете« коридор »или« дверь »бесконечно ... – user2730877

+0

@ user2730877, то, как вы вводите ввод, неверно. Вы видите мою строку, которая прокомментирована? Вам нужно получить новое значение 'DoorHallwayMB1'. – clcto

0

Вам нужно обернуть свой код в цикле с соответствующим механизмом выхода. Например

bool exitCondition=false; 
while (true) 
{ 
    // your code which also sets exitConditon 
    if(exitCondition) {break;} 
} 
+0

Вопрос: Если вы собираетесь поставить 'if (exitCondition) {break; } 'в конце цикла, почему бы просто не использовать его как условное:' while (! exitCondition) ' – clcto

+0

True - нет веской причины, за исключением того, что мне нравится иногда использовать break. –

2

Еще один вариант, вы можете также использовать switch:

bool isValid = false; 
string DoorHallwayMB1 = string.Empty; 
while (!isValid) 
{ 
    Console.WriteLine("What will it be?"); 
    DoorHallwayMB1 = Console.ReadLine(); 
    switch (DoorHallwayMB1) 
    { 
     case "door": 
      Console.WriteLine("You open the rusty door to reveal a janitor's closet, you quickly stock up \non ammo, and return to the Hangar."); 
      isValid = true; 
      break; 
     case "corridor": 
      Console.WriteLine("You walk down the corridor and find some ammo forr your pistol. You return to the hangar"); 
      isValid = true; 
      break; 
     default: 
      Console.WriteLine("invalid. make sure you type either 'corridor' or 'door'"); 
      break; 
    } 
} 
+1

Осторожно. Внутренний разрыв прерывается от коммутатора, а не цикла. – clcto

+0

Я думал, что ему просто нужен бесконечный цикл, и оценим DoorHallwayMB1 в начале цикла. – vmgmail

+0

Нет, он не хочет зацикливаться, пока не получит действительный ответ. – clcto

Смежные вопросы