Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379

Помогите пожалуйста с написанием кода для текстового квеста игры

07.12.2015, 17:11. Показов 7032. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с написанием кода для тестового квеста, сценарий написан.
Написать надо не через одни if, а с функциями и прочим
квест делится на три части: собрать слово, ответить на тест, и приготовить блюдо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2015, 17:11
Ответы с готовыми решениями:

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

Помогите пожалуйста с написанием программного продукта!
Вобщем задача заключается в том что мне нужно написать программу которая могла бы создавать илюзии миражей на картинке!!! Если есть какие...

Друзья, помогите пожалуйста с написанием скрипта. - ОЧЕНЬ НАДО!
В общем я не спец по веб программированию, но прошу вас написать небольшой скриптик. Речь пойдёт о небольшом спаме, но спаме добром (там...

28
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
07.12.2015, 21:47
Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string[] words = {"бифштекс", "буррито", "жульен", "заливное", "кебаб", "манник", "мимоза", "оливье", "пицца", "роллы", "ризотто", "солянка", "тирамису", "хачапури", "шашлык"};
Random rand = new Random();
 
while (true)
{
    int index = rand.Next(words.Length);
 
    Console.WriteLine("Соберите слово из следующих букв: ");
    Console.Write(new string(words[index].OrderBy(x => rand.Next()).ToArray()) + Environment.NewLine); // не очень выглядит. Перемешиваем буквы в слове.
 
    string answer = Console.ReadLine();
 
    if (answer == words[index]) Console.Write("Правильно!");
    else Console.Write("Ошибка!");
 
    Console.WriteLine(" Попробуем снова?\r\n•ДА(1) \r\n•НЕТ(2)");
    string anew = Console.ReadLine();
 
    if (anew == "2") break;
    else continue;
}
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 21:47  [ТС]
как string преобразовать в char?
0
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
07.12.2015, 21:52
Эмили, char.Parse() или обращаться через индексатор: string s = "abc" s[1] - вернет символ b
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 21:54
Цитата Сообщение от Эмили Посмотреть сообщение
можете подсказать, как из if полностью завершить работу программы
Гуглится всего 1 минуту


C#
1
2
3
4
if (a == 1)
   Igra();
else
   Environment.Exit( 0 );
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 21:57  [ТС]
Почти так как надо только слова не должны повторяться, и при правильном ответе выдается всего три слова, дальше цикл заканчивается
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
08.12.2015, 08:53
Тут есть алгоритм перемешивания букв в словах, посмотри может сможеш переделать под себя.

Добавлено через 26 минут
Вот примерно то, что требовалось(выводится перемешаное слово, проверяется оригинал на совпадение, если правильно, то отгадываем еще два слова).

Добавлено через 9 часов 46 минут
Вот полный текст проги, проверено, слова не повторяются, буквы перемешиваются все:

Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
using System;
/*
Задание:
КОНКУРС «СОБЕРИ СЛОВО»
Игроку выдается набор букв, из которых будет необходимо сложить слова. 
Ответ нужно ввести на клавиатуре, программа сравнивает, одинаковы ли слово 
введённое пользователем и слово задуманное компьютером. 
И выдает следующий набор букв если верно (так 3 раз), если нет, то предлагает 
попробовать снова или же закончить участие. 
 
Бифштекс, Буррито, Жульен, Заливное, Кебаб, Манник, 
Мимоза, Оливье, Пицца, Роллы, Ризотто, Солянка, Тирамису, Хачапури, Шашлык
*/
namespace QuestGame
{
    class Program
    {
        static void Main( string[] args )
        {
            CookeryGame cookery = new CookeryGame();
 
            cookery.Welcome();
            cookery.PageSwitch();
 
            Console.ReadKey();
        }
    }
 
    class CookeryGame
    {
        public void Welcome()
        {
            Console.Clear();
            Console.WriteLine( "Сегодня мы с вами собрались на «Кулинарный поединок», \nчтобы повеселиться, " +
               "отдохнуть, узнать что-то новенькое. \nУ всех присутствующих будет возможность, отвечая на вопросы, "
            + "\n" + "блеснуть знаниями по кулинарии. " + "\n"
            + "\n" + "Выберете конкурс в котором желаете поучаствовать:"
            + "\n" + "•    Конкурс "собери слово"\t(1)"
            + "\n" + "•    Конкурс  вопросов.\t\t(2)"
            + "\n" + "•    Кулинарная битва.\t\t(3)"
            + "\n" + "•    Выход            \t\t(0)"
            + "\n" + "Выбирите вариант ответа" );
        }
        public void PageSwitch()
        {
            string page = Console.ReadLine();
            int pageNum;
            if( Int32.TryParse( page, out pageNum ) )
            {
                switch( pageNum )
                {
                    case 1:
                        new ConstructorWords();
                        Welcome();
                        PageSwitch();
                        break;
                    case 2:
                        Console.WriteLine( "Временно не доступно, в разработке." ); //TODO: реализовать метод или класс для конкурса вопросов
                        //Welcome();
                        PageSwitch();
                        break;
                    case 3:
                        Console.WriteLine( "Временно не доступно, в разработке." ); //TODO: реализовать метод или класс для конкурса вопросов
                        //Welcome();
                        PageSwitch();
                        break;
                    case 0:
                        Environment.Exit( 0 );
                        break;
                    default:
                        InputError();
                        break;
                }                
            } else
            {
                InputError();
            }
        }
 
        void InputError()
        {
            Console.WriteLine( "Неправильный ввод, введите числа от 0 до 3 !" );
            PageSwitch();
        }
    }
 
    class ConstructorWords
    {
        public ConstructorWords()
        {
            Console.Clear();
            string[] free = RandomQuestWords( 3 );   // выбираем три случайных слова
            foreach( string s in free )
            {
                string trmText = TransformText( s );  // перемешиваем буквы в слове
                Console.WriteLine( trmText );
                string slovoUser = Console.ReadLine();
                if( slovoUser != s )
                {
                    if( isRestart() )
                    {
                        new ConstructorWords();
                        return;
                    } else
                        return;
                }
 
            }
            Сongratulations();
        }
 
        private bool isRestart()
        {
            Console.WriteLine( "Ошибочка! Попробуем снова?\r\n•ДА(1) \r\n•НЕТ(2)" );
 
            string answ = Console.ReadLine();
            int answer;
            if( Int32.TryParse( answ, out answer ) )
            {
                if( answer == 1 )
                    return true;
            }
            return false;
        }
 
        private string[] RandomQuestWords( int numWords )
        {
            string[] QuestWords = {
            "Бифштекс", "Буррито", "Жульен", "Заливное", "Кебаб",
            "Манник", "Мимоза","Оливье", "Пицца", "Роллы", "Ризотто",
            "Солянка", "Тирамису", "Хачапури", "Шашлык"};
 
            string[] newWords = new string[numWords];
            Random rand = new Random();
            for( int i = 0, j = rand.Next( 0, 14 ); i < numWords; i++, j = rand.Next( 0, 14 ) )
            {
                if( QuestWords[j] != newWords[0] && QuestWords[j] != newWords[1] && QuestWords[j] != newWords[2] )
                    newWords[i] = QuestWords[j];
                else
                    i--;
            }
            return newWords;
        }
 
        /// <summary>
        /// Перемешивание букв в слове за исключением первого и последнего символа
        /// </summary>
        string eng_rus_alphavit = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
 
        private string RndSym( string word )
        {
            if( word.Length > 2 )
            {
                Random rnd = new Random( (int)DateTime.Now.Ticks );
                string ret = "";
 
                //Построим массив случайно перемешанных индексов кроме первого и последнего
                int[] index = new int[word.Length];
                for( int i = 0; i < word.Length; i++ )
                    index[i] = -1;                          //  все индексы заполняются значением -1
                index[0] = 0;                               //  исключает первый индекс(букву) из перемешивания
                index[word.Length - 1] = word.Length - 1;   //  исключает последний индекс(букву)
                int v = rnd.Next( 1, word.Length - 1 );
                for( int i = 1; i < word.Length - 1; i++ )
                {
                    while( index[v] != -1 )
                        v = rnd.Next( 1, word.Length - 1 );
                    index[v] = i;
                }
 
                //Соберем слово используя массив индексов
                for( int i = 0; i < word.Length; i++ )
                {
                    ret += word[index[i]];
                }
                return ret;
            }
            return word;
        }
 
        private string RndNonSym( string word )
        {
            if( word.Length > 2 )
            {
                Random rnd = new Random( (int)DateTime.Now.Ticks );
                string ret = "";
 
                //Построим массив случайно перемешанных индексов кроме первого и последнего
                int[] index = new int[word.Length];
                for( int i = 0; i < word.Length; i++ )
                    index[i] = -1;
 
                //index[0] = 0;                                  //  исключает первый индекс
                //index[word.Length - 1] = word.Length - 1;      //  исключает последний индекс
                int v = rnd.Next( 1, word.Length - 1 );
                for( int i = 0; i < word.Length; i++ )      // 0 - перемешать и первый индекс, 1 - оставить первый индекс, 
                {
                    while( index[v] != -1 )                    // если индекм заполнен ищем следующий свободный (-1), иначе идем дальше
                        v = rnd.Next( 0, word.Length );    // 0 - перемешать и первый индекс, 1 - оставить первый индекс
                    index[v] = i;
                }
 
                //Соберем слово используя массив индексов
                for( int i = 0; i < word.Length; i++ )
                {
                    ret += word[index[i]];
                }
                return ret;
            }
            return word;
        }
 
        /// <summary>
        /// Преобразование текста
        /// </summary>
        public string TransformText( string text )
        {
            int begin;
            string nword;
            char[] array = text.ToCharArray();
            for( int i = 0; i < array.Length; i++ )
            {
                if( eng_rus_alphavit.Contains( array[i].ToString() ) )
                {
                    begin = i;
                    while( eng_rus_alphavit.Contains( array[i].ToString() ) && (++i < array.Length) )
                    { }
                    nword = RndNonSym( text.Substring( begin, i - begin ) );
                    //Замена исходного слова на перемешанное
                    for( int j = begin; j < i; j++ )
                    {
                        array[j] = nword[j - begin];
                    }
                }
            }
            string ret = "";
            foreach( char c in array )
                ret += c;
            return ret;
        }
 
        private void Сongratulations()
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine( "Поздравляем, все слова угаданы!!!" );
            Console.ResetColor();
            Console.ReadKey();
        }
    }
}


Эмили, если был полезен, поставьте "+1 Спасибо" у сообщения.
1
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
08.12.2015, 14:06  [ТС]
Цитата Сообщение от antis28 Посмотреть сообщение
Вот полный текст проги, проверено, слова не повторяются, буквы перемешиваются все
спасибо конечно за код но мне надо подкорректировать свой
я догадываюсь в каких строках ошибки но как исправить пока не знаю
C#
1
2
3
4
5
6
string[] slovo = RandomWords(3);  
              Random rand = new Random();
              int index = rand.Next(slovo.Length);
              Console.Write(new string(slovo[index].OrderBy(x => rand.Next()).ToArray()) + Environment.NewLine); 
 
                string answer = Console.ReadLine();
Добавлено через 27 минут
Ошибку исправила
0
09.12.2015, 13:04

Не по теме:

Цитата Сообщение от Эмили Посмотреть сообщение
спасибо конечно за код но мне надо подкорректировать свой
я догадываюсь в каких строках ошибки но как исправить пока не знаю
Пажалуйста, код писал скорее для получения опыта, а так же как вариант решения вашей задачи и возможно, использования его (кода) частей для ваших целей.

Если есть еще вопросы буду рад помочь.

0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
15.12.2015, 22:11  [ТС]
antis28, спасибо, но меня пока другая проблема
не могли бы помочь
Замена данных в файле со списком рекордов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2015, 22:11

помогите с написанием пожалуйста, не могу понять что нужно делать дальше
мне надо найти из куска проги , считанной из файла, числа и вывести их в stringgrid, вот мой плачевный набросок unit Unit1; ...

Структура текстового квеста
Хочу попытаться написать текстовый квест по принципу пользователю дают текст с описанием события и пару ответов(или действий). Исходя из...

Создание текстового квеста на Visual Basic 6
Возникла такая задача: после ввода текста в TextBox необходимо подтвердить его нажатием клавиши Enter. В принципе, можно было бы сделать...

нужна помошь с написанием кода для простейших задач
вот собственно задачи, буду очень благодарен если вы поможете написать код, понятия не имею с чего начать.. 1) Дан двумерный массив...

Помогите вспомнить название квеста
помогите вспомнить название квеста....вообщем играл у друга давно уже с 2004-2008 точную дату не помню вообще он комп купил и ему дали диск...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru