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

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

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

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

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

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

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

28
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
07.12.2015, 17:13
На примере хоть бы показали, или хотите чтобы за вас еще и придумали все сами?
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 17:36  [ТС]
вот что написано, а дальше не знаю стоит ли разделять на классы или писать единым кодом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args)
        {
            Console.WriteLine("Сегодня мы с вами собрались на «Кулинарный поединок», чтобы повеселиться," + 
                "отдохнуть, узнать что-то новенькое. У всех присутствующих будет возможность, отвечая на вопросы," +
                "блеснуть знаниями по кулинарии. " );
            Console.WriteLine("Выберете конкурс в котором желаете поучаствовать:");
            Console.WriteLine("•  Конкурс «собери слово»(1)");
            Console.WriteLine("•    Конкурс  вопросов.(2)");
            Console.WriteLine("•  Кулинарная битва.(3)");
            Console.WriteLine("Выбирите вариант ответа");
            int stranica = Convert.ToInt32(Console.ReadLine());
            if (stranica == 1)
            { }
            if (stranica == 2)
            { }
            if (stranica == 3)
            { }
 
 
        }
Добавлено через 10 минут
как лучше добавить 15 слов для конкурса, массив из 15 слов а потом каждое из них разбивать на символы или сразу писать 15 переменных типа char?
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
07.12.2015, 17:55
Цитата Сообщение от Эмили Посмотреть сообщение
потом каждое из них разбивать на символы
Так. А вообще, чтобы не месить кашу в мейне - разделяйте проект на классы и функции.
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 18:17  [ТС]
как ограничиться выбором всего трех слов из списка, причем символы должны выводиться через пробел и рандомно
C#
1
2
3
4
5
6
7
8
9
10
 string slova = ("Бифштекс Буррито Жульен Заливное Кебаб Манник Мимоза Оливье Пицца Роллы Ризотто Солянка Тирамису Хачапури Шашлык");
                string[] chast = slova.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                Random rand = new Random();
                for (int i = rand.Next(0, 14); i < 14; i++)
                {
                    string a = chast[i];
                    char[] arr = a.ToCharArray();
                    Console.WriteLine(arr);
                }
                Console.ReadKey();
Добавлено через 12 минут
Цитата Сообщение от Woldemar89 Посмотреть сообщение
разделяйте проект на классы и функции.
а как вызвать класс в мейне
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 18:28
Например так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
Class My
{
    public void MyMethod()
   {
     //.....
   }
}
static void Main(string[] args)
{
    MyClass myclass = new MyClass();
    myclass.MyMethod();
}
Вот немного набрасал ваш пример разделенный на методы:
Кликните здесь для просмотра всего текста

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
class Program
    {
        static void Main( string[] args )
        {
            Cookery cookery = new Cookery();
 
            cookery.Welcome();
            cookery.PageSwitch();
            cookery.PageSwitch();           
        }
    }
 
    class Cookery
    {
        int Page;
 
        public int Page1
        {
            get{return Page;}
        }
 
        public void Welcome()
        {
            Console.WriteLine( "Сегодня мы с вами собрались на «Кулинарный поединок», чтобы повеселиться," +
               "отдохнуть, узнать что-то новенькое. У всех присутствующих будет возможность, отвечая на вопросы," +
               "блеснуть знаниями по кулинарии. "
            + "\n" + "Выберете конкурс в котором желаете поучаствовать:"
            + "\n" + "•    Конкурс «собери слово»(1)"
            + "\n" + "•    Конкурс  вопросов.(2)"
            + "\n" + "•    Кулинарная битва.(3)"
            + "\n" + "Выбирите вариант ответа");
        }
        public void PageSwitch()
        {
            int stranica = Convert.ToInt32( Console.ReadLine() );
            if( stranica == 1 )
            { }
            if( stranica == 2 )
            { }
            if( stranica == 3 )
            { }
        }
}
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 19:08  [ТС]
как из этого массива извлечь три разных слова рандомно
C#
1
2
 string slova = ("Бифштекс Буррито Жульен Заливное Кебаб Манник Мимоза Оливье Пицца Роллы Ризотто Солянка Тирамису Хачапури Шашлык");
            string[] chast = slova.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
Добавлено через 13 минут
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 19:33
Вот как вариант, но еще сырой и требует доработки(переработки):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public string[] RandomWords(int numWords) // numWords - какое колличество слов нужно достать из массива.
        {
            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 ) )
            {
                newWords[i] = slova[j];
            }
            return newWords;
        }
        string[] slova = {
            "Бифштекс", "Буррито", "Жульен", "Заливное", "Кебаб",
            "Манник", "Мимоза","Оливье", "Пицца", "Роллы", "Ризотто",
            "Солянка", "Тирамису", "Хачапури", "Шашлык"};
Бывает несколько одинаковых слов подряд.

Добавлено через 18 минут
Вот немного подправил, вроде работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 public string[] RandomWords( int numWords )
        {
            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( slova[j] != newWords[0] && slova[j] != newWords[1] && slova[j] != newWords[2] )
                    newWords[i] = slova[j];
                else
                    i--;
            }
            return newWords;
        }
Конечно, возможно есть и лучшее решение.
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 20:25  [ТС]
возникает ошибка в мейне
"Ошибка 1 Для нестатического поля, метода или свойства "TextGames.slovo.free(int)" требуется ссылка на объект C:\Users\Наташа\Desktop\Текстовый квест\TextGames\TextGames\Program.cs 25 32 TextGames"

как исправить?

Добавлено через 17 минут
все ошибку нашла
а как теперь разбить эти три слова
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 20:27
Кликните здесь для просмотра всего текста

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
static void Main( string[] args )
        {
            Cookery cookery = new Cookery();
 
            cookery.Welcome();
            cookery.PageSwitch();
            Console.Clear();
 
            string[] rw = cookery.RandomWords( 3 );
            foreach( string s in rw )
            {
                Console.WriteLine( s );
            }
            Console.ReadKey();
        }
 
class Cookery
    {
        int Page;
 
        public int Page1
        {
            get { return Page; }
        }
 
        public void Welcome()
        {
            Console.WriteLine( "Сегодня мы с вами собрались на «Кулинарный поединок», чтобы повеселиться," +
               "отдохнуть, узнать что-то новенькое. У всех присутствующих будет возможность, отвечая на вопросы," +
               "блеснуть знаниями по кулинарии. "
            + "\n" + "Выберете конкурс в котором желаете поучаствовать:"
            + "\n" + "•    Конкурс «собери слово»(1)"
            + "\n" + "•    Конкурс  вопросов.(2)"
            + "\n" + "•    Кулинарная битва.(3)"
            + "\n" + "Выбирите вариант ответа" );
        }
        public void PageSwitch()
        {
            int stranica = Convert.ToInt32( Console.ReadLine() );
            if( stranica == 1 )
                ;
            if( stranica == 2 )
                ;
            if( stranica == 3 )
                ;
        }
public string[] RandomWords( int numWords )
        {
            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( slova[j] != newWords[0] && slova[j] != newWords[1] && slova[j] != newWords[2] )
                    newWords[i] = slova[j];
                else
                    i--;
            }
            return newWords;
        }
        string[] slova = {
            "Бифштекс", "Буррито", "Жульен", "Заливное", "Кебаб",
            "Манник", "Мимоза","Оливье", "Пицца", "Роллы", "Ризотто",
            "Солянка", "Тирамису", "Хачапури", "Шашлык"};
    }

В смысле разбить?
На буквы?
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 20:46  [ТС]
этот код выводит сразу три слова а как сделать чтобы выводил лишь одну, и как преобразовать его в символы и перемешать
задача в том чтобы игроку выводилось не слово а набор букв (при чем буквы должны быть в разброс) из которого он должен составить верное слово, и только после этого ему выдается след. слово и так три раза
если же игрок ошибается то получает вопрос попытаться заново или просто выйти, если выбирает продолжить то слова выдаются заново

Добавлено через 12 минут
вот код и он не в Main(в Main кода почти нет все в этих классах пишется)
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
 public static void free()
        {
            string[] free = RandomWords(3);
            foreach (string s in free)
            {
                Console.WriteLine(s);
                string slovoUser = Console.ReadLine();
                if (slovoUser != s)
                {
                    Console.WriteLine("Ошибочка! Попробуем снова?\r\n•ДА(1) \r\n•НЕТ(2)");
                    int a = Convert.ToInt32(Console.ReadLine());
                    if (a == 1)
                        free();//Ошибка   1   "free" является "переменная", но используется как "метод"
 
                    else
                        return;//ошибка выхода
                }
            
            }
            
            Console.ReadKey();
        }
 
        public static string[] RandomWords(int numWords)
        {
            string[] slova = {"Бифштекс", "Буррито", "Жульен", "Заливное", "Кебаб", "Манник", "Мимоза",
            "Оливье", "Пицца", "Роллы", "Ризотто", "Солянка", "Тирамису", "Хачапури", "Шашлык"};
            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 (slova[j] != newWords[0] && slova[j] != newWords[1] && slova[j] != newWords[2])
                    newWords[i] = slova[j];
                else
                    i--;
            }
           
            return newWords;
        }
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 21:06
Думаю надо посмотреть тут.

Добавлено через 8 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void free()// Возможно тут надо переименовать
{
    string[] free = RandomWords( 3 ); //Или  возможно тут надо переименовать
    foreach( string s in free )
    {
        Console.WriteLine( s );
        string slovoUser = Console.ReadLine();
        if( slovoUser != s )
        {
            Console.WriteLine( "Ошибочка! Попробуем снова?\r\n•ДА(1) \r\n•НЕТ(2)" );
            int a = Convert.ToInt32( Console.ReadLine() );
            if( a == 1 )
                free();// Переименуйте либо название  поля либо название метода на отличное от  free
} 
Console.ReadKey(); 
}
как сделать чтобы выводил лишь одну, и как преобразовать его в символы и перемешать
Над остальным еще подумаю.
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 21:19  [ТС]
почти то что нужно, только там windows form а я пишу в консоле,
мне надо взять одно слово и разбить на буквы, перемешать их и вывести пользователю, он вводит свое слово и я сравниваю его со своим если равны идем дальше
C#
1
2
3
4
5
6
foreach (string s in free)
            {
                string one = "";
                Console.WriteLine(one[s]);///ошибка здесь 
                string slovoUser = Console.ReadLine();                
                if (slovoUser != one[s])
Ошибка 2 Аргумент "1": преобразование типа из "string" в "int" невозможно

Добавлено через 8 минут
так уже меньше ошибок, но возникает проблема с s
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
     public static void free()
        {
            string[] slovo = RandomWords(3);
            foreach (string s in slovo)
            {
                string str = slovo[s];
                List<char> list = new List<char>(str.ToCharArray());
                Random r = new Random();
                int i;
                while (list.Count > 1)
                {
                    i = r.Next(list.Count);
                    Console.WriteLine(i);
                }
                string slovoUser = Console.ReadLine();
                if (slovoUser != slovo[s])
                {
                    Console.WriteLine("Ошибочка! Попробуем снова?\r\n•ДА(1) \r\n•НЕТ(2)");
                    int a = Convert.ToInt32(Console.ReadLine());
                    if (a == 1)
                        free();//Ошибка   1   "free" является "переменная", но используется как "метод"
 
                    else
                        return;//ошибка выхода
                }           
            }           
            Console.ReadKey();
        }
0
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
07.12.2015, 21:20
Эмили, Для себя пишите или уч задание? если второе, то что последнее изучали? Проходили ООП ?

пс. Напишите лучше весь ваш текстовый вариант квеста с ветвлениями и подробным объяснением.
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 21:24  [ТС]
вот все задание

КОНКУРС «СОБЕРИ СЛОВО»
Игроку выдается набор букв, из которых будет необходимо сложить слова. Ответ нужно ввести на клавиатуре, программа сравнивает, одинаковы ли слово введённое пользователем и слово задуманное компьютером. И выдает следующий набор букв если верно (так 3 раз), если нет, то предлагает попробовать снова или же закончить участие.

Бифштекс, Буррито, Жульен, Заливное, Кебаб, Манник, Мимоза, Оливье, Пицца, Роллы, Ризотто, Солянка, Тирамису, Хачапури, Шашлык
0
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
07.12.2015, 21:28
Цитата Сообщение от Эмили Посмотреть сообщение
сложить слова.
слова или одно слово? про знания не ответили
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 21:28
Цитата Сообщение от Эмили Посмотреть сообщение
C#
1
2
3
string one = ""; Console.WriteLine(one[s]);///ошибка здесь 
string slovoUser = Console.ReadLine();
 if (slovoUser != one[s])
Если s - строка.
Что по вашему означает эта конструкция: one[s]?
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 21:35  [ТС]
знаний не много к сожалению
условные операторы, функции и методы, циклы, массивы, обработка исключений, SwitchCase, Windows API, Работа
с файловой системой,

Добавлено через 1 минуту
Цитата Сообщение от sldp Посмотреть сообщение
слова или одно слово?
в данном случаи я использую лишь одно слово, словосочетания пока слишком сложно
0
6 / 6 / 2
Регистрация: 05.07.2015
Сообщений: 21
07.12.2015, 21:35
Цитата Сообщение от Эмили Посмотреть сообщение
C#
1
2
3
string one = ""; Console.WriteLine(one[s]);///ошибка здесь 
string slovoUser = Console.ReadLine();
 if (slovoUser != one[s])
Если s - строка.
Что по вашему означает эта конструкция: one[s]?

Если разложить на составляющие то получим:
C#
1
2
 one[""]; // так нельзя
 one[1]; // так можно
0
1 / 1 / 1
Регистрация: 14.05.2013
Сообщений: 379
07.12.2015, 21:43  [ТС]
ошибок не выдвет, но на экран ничего не выводит
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
 string[] slovo = RandomWords(3);
            foreach (string s in slovo)
            {
                for (int J = 0; J < 2; J++)
                {
                    string str = slovo[J];
                    Random r = new Random();
                    while (slovo[J].Length != slovo[J].Length)
                    {
                        int i = r.Next(slovo[J].Length);
                        Console.WriteLine(i);
                    }
                    string slovoUser = Console.ReadLine();
                    if (slovoUser != slovo[J])
                    {
                        Console.WriteLine("Ошибочка! Попробуем снова?\r\n•ДА(1) \r\n•НЕТ(2)");
                        int a = Convert.ToInt32(Console.ReadLine());
                        if (a == 1)
                            free();
 
                        else
                            return;//ошибка выхода
                    }           
                }               
            }           
            Console.ReadKey();
        }
                    }
Добавлено через 7 минут
можете подсказать, как из if полностью завершить работу программы
C#
1
2
3
4
if (a == 1)
                    Igra();
                else
                    return;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2015, 21:43
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru