C# - Палач с указанными требованиями

Я пытаюсь создать игру с палачом на C#, но мне нужно знать о многих вещах. Мне нужно использовать StreamReader, я должен хранить записи пользователя в файле (имя пользователя, сколько раз они пытались выиграть игру и т. д.), И мне нужно создать меню, в котором пользователь может либо выбрать новая тема слов или просто сбросить текущую игру. Так что пока что у меня есть "шифрование". Буквы слова пишутся через тире, я могу попросить пользователя выбрать имя и выбрать тему. Но как я должен сообщить программе, когда пользователь найдет письмо? Я хочу, чтобы это было так: Word: ----- (яблоко), и если пользователь вводит p, появляется новая строка, но на этот раз она отображает «-pp--». Как мне это сделать?

Код в текущем состоянии:

static void wordLength()
    {
        StreamReader sr = new StreamReader(@"C:\Users\hardi\Desktop\Programozás\gyumolcsok.txt", Encoding.GetEncoding("iso-8859-2")); 
        string szo = Convert.ToString(sr.ReadLine());

        {
            for (int i = 0; i < szo.Length; i++)  
            {
                Console.Write("_");
            }
        }

    }

    static void userName()
    {
        Console.Clear();

        Console.WriteLine("What's your name? ");
        string user = Console.ReadLine();

    }


    static void category()
    {
        Console.Clear();

        Console.WriteLine("Choose a number to specify the topic: ");
        Console.WriteLine("1: Fruit \n2: Animals");
        int caseSwitch = Convert.ToInt32(Console.ReadLine());

        switch (caseSwitch)
        {
            case 1:
                Console.WriteLine("Category: Fruit");
                StreamReader sr = new StreamReader(@"C:\Users\hardi\Desktop\Programozás\gyumolcsok.txt", Encoding.GetEncoding("iso-8859-2"));

                break;
            case 2:
                Console.WriteLine("Category: Animals");
                StreamReader sr1 = new StreamReader(@"C:\Users\hardi\Desktop\Programozás\allatok.txt", Encoding.GetEncoding("iso-8859-2"));

                break;
            default:
                Console.WriteLine("The given number is not an option.");
                return;
        }
    }

    static void Main(string[] args)
    { 

        userName();
        category();
        wordLength();
        Console.ReadKey();

    }
}
}

Одним из способов было бы отслеживать буквы, которые пользователь угадал или нашел, и когда вы выписываете '_ в wordLength (), проверьте, находится ли текущая буква в скрытом слове в угаданном наборе, и если она тогда напишите букву вместо _.

Rup 07.06.2018 18:33

Есть много проблем с кодом, которые следует исправить, прежде чем продолжить. Например, вы фактически нигде не сохраняете имя пользователя. Вы создаете экземпляры потоковых ридеров, но никогда их не используете (и вы можете рассмотреть возможность использования класса File для чтения текстовых файлов вместо прямого использования StreamReader). Вы можете подумать о разработке своей программы до того, как начнете писать методы, чтобы знать, какие методы должны быть созданы, как должны выглядеть их подписи, как должно сохраняться состояние программы и т. д.

Rufus L 07.06.2018 19:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
80
1

Ответы 1

Один из способов сделать это - рассматривать слово как массив символов и сохранять предположения, сделанные пользователем, в другом массиве символов. Затем для каждого символа в слове, если он существует в массиве «guessedLetters», отобразите его, в противном случае отобразите символ «-».

Например, этот метод принимает слово и список символов, которые пользователь угадал, и отображает только правильно угаданные символы:

private static string GetMaskedWord(string word, List<char> lettersGuessed)
{
    if (word == null) return word;
    if (lettersGuessed == null) return new string('-', word.Length);

    return string.Join("", word.Select(c => lettersGuessed.Contains(c) ? c : '-'));
}

Пример использования:

private static void Main()
{
    string word = "apple";

    // This stores the guessed characters, currently only a 'p'
    var guessedLetters = new List<char> {'p'};

    Console.WriteLine(GetMaskedWord(word, guessedLetters));

    GetKeyFromUser("\nDone! Press any key to exit...");
}

Выход

Другие вопросы по теме