Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
1

Текстовый квест

27.02.2020, 18:29. Просмотров 2954. Ответов 16
Метки нет (Все метки)

Вечер добрый.
Такое дело: я совсем новичок, захотелось написать простенький текстовый КВЕСТ (пока что без веток сюжета, тк сейчас чисто в процессе изучения различных команд), попутно гуглю непонятные моменты, чтобы одновременно изучать новые операторы, но сейчас возник вопрос, ответа на который я не нашел: есть меню выбора действия, пользователь, например, выбрал вариант, который её привёл к развитию сюжета, происходит возврат в меню для выбора другого действия - это у меня получилось сделать с помощью do while. Вопрос вот в чем: каким образом сделать так, чтобы выбранный вариант ответа исчезал? То есть, у нас есть два варианта: да и нет. При выборе "нет" происходит возврат в меню выбора действия, и там должно остаться только "да". Подскажите пожалуйста, как такое реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2020, 18:29
Ответы с готовыми решениями:

Текстовый квест в стилистике 90х
Доброго времени суток! У меня есть желание создать текстовый квест в стилистике 90х (или...

Возможно ли создать текстовый квест с помощью "Консольного приложения"?
Здравствуйте, хотел узнать: возможно ли создать текстовый квест с помощью "Консольного приложения"...

Консольная игра квест
Помогите пожалуйста создать игру-квест, никак не могу понять почему выскакивает ошибка, с...

Нужно доделать консодьный текстовой квест
Мне необходимо доделать текстовой квест. Я хочу чтобы если в конце игрок отвечал "нет" то писалось...

16
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
27.02.2020, 18:32 2
Самый примитивный способ - использовать логические переменные (тип bool), в которых хранить значение, активный ли ответ. Проверять, например, через if.
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
27.02.2020, 18:46  [ТС] 3
Самый примитивный способ - использовать логические переменные (тип bool), в которых хранить значение, активный ли ответ. Проверять, например, через if.
А можно пример кода, пожалуйста? Смысл я понял
0
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
27.02.2020, 18:50 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool yes = true;
 
while (true)
{
    if (yes)
        Console.WriteLine("Yes");
 
    Console.WriteLine("No");
    string s = Console.ReadLine();
 
    if (s.ToLower() == "yes")
        yes = false;
 
    Console.WriteLine();
}
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
27.02.2020, 19:04  [ТС] 5
Цитата Сообщение от QuakerRUS Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool yes = true;
 
while (true)
{
    if (yes)
        Console.WriteLine("Yes");
 
    Console.WriteLine("No");
    string s = Console.ReadLine();
 
    if (s.ToLower() == "yes")
        yes = false;
 
    Console.WriteLine();
}
Я походу совсем дуб. Забыл упомянуть, что управление осуществляется цифрами. Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Console.WriteLine("Привет, путник!");
          Console.WriteLine("Хочешь, расскажу тебе историю?");
          int a;
          do
          { 
          Console.WriteLine("1. Да");
          Console.WriteLine("2. Нет");
          a = Convert.ToInt32(Console.ReadLine());
          if (a == 1)
          
            {
                Console.WriteLine("Отлично! Начнем.");
            }
          if (a == 2)
            { 
                Console.WriteLine("Подумай хорошенько.");
            }
          if ((a != 1) && (a != 2))
            {
                Console.WriteLine("Я тебя не понимаю.");
            }
          } while (a != 1);
0
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
27.02.2020, 19:14 6
Лучший ответ Сообщение было отмечено bomzh00 как решение

Решение

bomzh00, какое слово надо убрать?

Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        Console.WriteLine("Привет, путник!");
        Console.WriteLine("Хочешь, расскажу тебе историю?");
        int a;
        bool no = true;
        do
        {
            Console.WriteLine("1. Да");
            if (no) Console.WriteLine("2. Нет");
            a = Convert.ToInt32(Console.ReadLine());
            if (a == 1)
 
            {
                Console.WriteLine("Отлично! Начнем.");
            }
            if (a == 2)
            {
                Console.WriteLine("Подумай хорошенько.");
                no = false;
            }
            if ((a != 1) && (a != 2))
            {
                Console.WriteLine("Я тебя не понимаю.");
            }
        } while (a != 1);
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
27.02.2020, 19:14  [ТС] 7
QuakerRUS, "Нет"
Разобрался, спасибо большое
0
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
27.02.2020, 19:16 8
Лучший ответ Сообщение было отмечено bomzh00 как решение

Решение

Вообще лучше заменить строки 15 и 20 на эти.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        Console.WriteLine("Привет, путник!");
        Console.WriteLine("Хочешь, расскажу тебе историю?");
        int a;
        bool no = true;
        do
        {
            Console.WriteLine("1. Да");
            if (no) Console.WriteLine("2. Нет");
            a = Convert.ToInt32(Console.ReadLine());
            if (a == 1)
 
            {
                Console.WriteLine("Отлично! Начнем.");
            }
            else if (a == 2 && no)
            {
                Console.WriteLine("Подумай хорошенько.");
                no = false;
            }
            else
            {
                Console.WriteLine("Я тебя не понимаю.");
            }
        } while (a != 1);
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
27.02.2020, 19:24  [ТС] 9
QuakerRUS, спасибо. А не могли бы вы, пожалуйста, объяснить, как это работает, если не затруднит?
0
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
27.02.2020, 19:27 10
bomzh00, if/else - конструкция если/иначе. Сначала проверяется первое условие в строке 10. Если оно не истинно, то проверяется условие в строке 15. Если и оно не истинно, то выполняется блок в строках 21-23.

Подробнее можете тут почитать.
https://metanit.com/sharp/tutorial/2.5.php
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
27.02.2020, 19:34  [ТС] 11
QuakerRUS
0
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
27.02.2020, 19:41 12
bomzh00, эм. Как и любая другая переменная. Сохраняете в нее значение, потом читаете. В строке 8 проверяется равна ли переменная true, и если равна, то выводится на экран "2. Нет". А в строке 15 дополнительная проверка на случай, если пользователь введет все равно двойку, даже если ему не предложат такой вариант.
1
1335 / 1030 / 201
Регистрация: 22.03.2015
Сообщений: 6,224
Записей в блоге: 3
28.02.2020, 07:23 13
А почему нельзя воспользоваться полиморфизмом ?
0
1349 / 796 / 434
Регистрация: 14.04.2015
Сообщений: 3,038
28.02.2020, 09:05 14
Почтальон, человек не понимает работу bool переменных, а Вы ему какие-то страшные слова предлагаете.
0
989 / 749 / 356
Регистрация: 30.10.2017
Сообщений: 2,170
28.02.2020, 09:10 15
Цитата Сообщение от Почтальон Посмотреть сообщение
А почему нельзя воспользоваться полиморфизмом ?
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Самый примитивный способ
Возможны разные варианты, только автор, сдается мне, еще на очень начальном уровне.
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 7
05.03.2020, 08:41  [ТС] 16
AndreyVorobey, я понимаю принцип работы bool переменной, но не понимаю, как она работает в данном случае хд
0
1349 / 796 / 434
Регистрация: 14.04.2015
Сообщений: 3,038
05.03.2020, 08:56 17
bomzh00, у переменной нет никакого принципа работы, она хранит в себе какое-то значение, и все.
и понимать там нечего, она меняет свое значение на какое-то другое при срабатывании какого-то события.
убери все лишнее из кода выше, и получится типа такого.
C#
1
2
3
4
5
6
7
8
            bool Flag = true;
 
            if (Console.ReadLine() == "1")
            {
                Flag = false;
            }
 
            Console.WriteLine(Flag);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2020, 08:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Задача с использованием структуры «текстовый файл» (в файле хранится текст) 1) Переписать в другой текстовый файл самую
Задача с использованием структуры «текстовый файл» (в файле хранится текст) 1) Переписать в другой...

Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого содержит символы
Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого...

Текстовый квест
Подскажите, кто может помочь в написании текстового квест на с++?; В универе задали создать...

Текстовый квест
Доброго времени суток господа. Возникла не большая заминка, задали написать текстовую игру на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.