Я кодировал текстовую приключенческую игру. Когда программа запускается, вызывается метод Boot()
, считая% APPDATA% .ilan \ texert для установки файлов (между тем есть только имя пользователя.txt). После Boot()
он переходит к MainMenu()
, где пользователь может выбрать игру, перейти к параметрам или выйти. Когда пользователь переходит в меню «Параметры» и возвращается, затем пытается сыграть в игру или вернуться в меню опций, игра завершается, что не должно происходить. Source
Boot()
= Строка 455
MainMenu()
= Строка 579
Main()
= Строка 50 Я считаю, что это происходит потому, что int
объявлен в самом методе, а потому, что метод вызывается несколько раз переменная int
сохраняет свое прежнее значение , Есть ли способ исправить это?Метод вызова на C# приводит к выходу программы
ответ
В строке 610 вы извлекаете результаты вашего метода MainMenu, а затем вызываете свой метод OptionMenu в строке 617, но после срабатывания метода OptionMenu() вы ничего не делаете, чтобы ваше приложение не прекращалось, как только управление возвращается назад к методу Main(). Даже несмотря на то, что вы вызываете MainMenu() в вашем методе OptionMenu(), нет ничего, оценивающего результаты этого вызова, поэтому все, что вы делаете, это написать меню на консоль и вернуться в Main(). Вам нужно поместить цикл в метод Main(), который будет многократно вызывать ваш метод MainMenu(), оценивая выбранные результаты, а другие параметры меню, такие как OptionMenu(), просто вернутся в этот цикл, а не вызовут главное меню. Что-то вроде этого:
string whatToDo = "null";
bool exitApp = false;
while (!exitApp)
{
whatToDo = AdvTime.MainMenu();
if (whatToDo.Contains("play"))
{
Menu("null", false);
}
if (whatToDo.Contains("options"))
{
AdvTime.OptionMenu();
}
if (whatToDo.Contains("exit"))
{
exitApp = true;
}
if (whatToDo.Contains("null"))
{
AdvTime.MMError("OM");
}
}
Я попробовал, но все равно то же самое. – Ilan321
Если вы обновите свой код на pastebin, я еще раз взгляну. В конечном счете все должно возвращаться в этот цикл, который должен циклически повторяться и снова вызвать MainMenu(), пока пользователь не выберет Exit. Если у вас есть другие места, где вы вызываете Environment.Exit(), это может быть обход этого цикла. –
[Здесь это так.] (Http://pastebin.ca/2463151) Я не знаю, почему он не работает, я попытался поставить OptionMenu() в цикл while, но такую же проблему. – Ilan321
- 1. Клонирование вызова приводит к выходу вызова из основной нити
- 2. PersistentLocalDateTimeAsString приводит к выходу DateTimeParseException
- 3. Printf Hex Форматирование приводит к неправильному выходу
- 4. Смешение типов данных приводит к выходу сердца
- 5. Изолированное хранилище приводит к выходу из памяти
- 6. мьютекса в цикле приводит к неожиданному выходу
- 7. ASP.NET нажатие клавиши ввода приводит к выходу
- 8. fflush на stderrr приводит к взрыву программы
- 9. доступ к файловому выходу внешней программы
- 10. Powershell команды $ table.Columns.Add («NewFieldName») приводит к неожиданному выходу на консоль
- 11. Функция удаления приводит к сбою программы C++
- 12. неправильный ввод приведет к выходу из программы C++
- 13. Почему это не приводит к выходу при использовании printf()?
- 14. Запись необработанных байтов в файл Python3 приводит к неожиданному выходу
- 15. Загрузка определенного фрейма в Delphi 6 приводит к немедленному выходу
- 16. gradle: disable output явно приводит к подробному выходу
- 17. Отражая примитивные типы, такие как «двойные» приводит к неожиданному выходу
- 18. if-statement с элемом приводит к неправильному выходу
- 19. PHP exec приводит к сбою программы
- 20. Освобождение указателя приводит к сбою моей программы
- 21. C++, определяющий два мультимадра, приводит к сбою программы
- 22. Доступ к выходу из кода C#
- 23. ActiveRecord Отношение к хеш-выходу
- 24. Закрытие последовательного порта приводит к сбою программы на mac
- 25. Загрузка текстуры SFML приводит к сбою программы
- 26. Выбор снимка экрана приводит к сбою программы C#
- 27. Создание новых объектов в C++-функции приводит к сбою программы
- 28. C#: Добавление целого числа к выходу
- 29. C++ код магически добавить 1 к выходу
- 30. Изменение активности на AppCompatActivity приводит к сбою программы - Eclipse (Android)
У вас нет цикла в 'public static void Main()'. Поместите контрольную точку в этот метод и используйте шаг за шагом, и вы увидите, что происходит не так. EDIT: Это говорит о том, что вам действительно нужно переосмыслить вашу * целую архитектуру ... – dialer
Я знаю, что моя архитектура сосет, я всего лишь новичок .. (я понятия не имею, как улучшить свой код, поэтому я делаю то, что есть) – Ilan321