Member 13752253 Ответов: 1

Диалоговое статической силы помочь? !


Я очень новичок в c# и нуждаюсь в некоторой помощи с моим кодом. Я не могу понять, где я ошибся, пытаясь получить часть моего кода, чтобы показать в терминале, в частности, блок, где я пытаюсь изменить цвет текста для мини-игры, которую я создаю. Кто-нибудь в состоянии помочь?
использование системы;

namespace Adventure
{
    public static class Game
    {
        static string CharacterName = "Max Steel";

        public static void StartGame()
        {
            Console.WriteLine("Digital Hawk");
            Console.WriteLine("Welcome to the Digital World of Secrecy!");
            NameCharacter();
            //Dialog();
        }

        static void NameCharacter()
        {
            Console.WriteLine("Please Enter Your Name:");
            CharacterName = Console.ReadLine();
            Console.WriteLine("Welcome to Digital Hawk! I will call you " + CharacterName + " from now on.");
        }

        static void Dialog(string message, string color)
        {
            if (color == "red")
            {
                Console.ForegroundColor = ConsoleColor.Red;
            }
            else if (color == "green")
            {
                Console.ForegroundColor = ConsoleColor.Green;
            }

            Console.WriteLine(message);
            Console.ResetColor();

            Console.WriteLine("We need your Help " + CharacterName + ", the world is comming apart!", "Red");
            Console.WriteLine("How do you feel about joining our troops to save the world?");
        }
    }

    class Item
    {
    }

    class Program
    {
        static void Main()
        {
            Game.StartGame();
            Console.Read();
        }
    }
}


Что я уже пробовал:

Я определенно перепробовал все, что мог придумать (но у меня очень мало знаний). Я пытался идти персонаж за персонажем, но я хочу, чтобы моя игра была уникальной. Я пробовал использовать только диалог("текст","цвет"); и то, что написано сейчас, безрезультатно. Все это появляется, за исключением статического пустого диалога без каких-либо ошибок или предупреждений. Я использую Visual Studio.

1 Ответов

Рейтинг:
1

OriginalGriff

Единственный вызов, который вы делаете в диалоговом методе, закомментирован:

    NameCharacter();
    //Dialog();
}
Но определение метода требует двух параметров:
static void Dialog(string message, string color)
Поэтому, если вы раскомментируете вызов, вы получите ошибку компилятора:
Error	1	No overload for method 'Dialog' takes 0 arguments	pathToFile.cs	LineNo	ColumnNo	ProjectName

Чтобы исправить это, вам нужно либо изменить метод, чтобы использовать параметры по умолчанию (которые могут быть чем-то, что вы еще не рассмотрели и, вероятно, не то, что вам нужно здесь), либо вызвать его с фактическими параметрами:
Dialog("This is my message to the user", "red");

Но... могу ли я предложить улучшение?
Передайте значение ConsoleColour вместо строки:
static void Dialog(string message, ConsoleColor color)
    {
    Console.ForegroundColor = color;
    Console.WriteLine(message);
    Console.ResetColor();

    Console.WriteLine("We need your Help " + CharacterName + ", the world is comming apart!", "Red");
    Console.WriteLine("How do you feel about joining our troops to save the world?");
    }
А затем передайте фактический цвет, когда вы его называете:
Dialog("This is my message to the user", ConsoleColor.Red);
Или даже по умолчанию:
static void Dialog(string message, ConsoleColor color = ConsoleColor.Green)
    {
    Console.ForegroundColor = color;
    Console.WriteLine(message);
    Console.ResetColor();

    Console.WriteLine("We need your Help " + CharacterName + ", the world is comming apart!", "Red");
    Console.WriteLine("How do you feel about joining our troops to save the world?");
    }
И тогда вы можете назвать это так:
Dialog("This is my message to the user", ConsoleColor.Red);

Или вот так:
Dialog("This is my message to the user");
И это все равно будет работать.


Member 13752253

Когда я добавил цвет переднего плана, он говорит, что для него нет определения? Что бы это могло значить?

OriginalGriff

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

Member 13752253

использование системы;

приключение пространства имен
{

публичный статический класс игры
{
статическая строка CharacterName = "Max Steel";

общественная статический недействительным StartGame()
{
Приставка.WriteLine("Цифровой Ястреб");
Приставка.WriteLine("Добро пожаловать в цифровой мир секретности!");
NameCharacter();
}

статический пустотный символ имени()
{
Приставка.WriteLine("Пожалуйста, Введите Свое Имя:");
CharacterName = Консоль.Линия чтения();
Приставка.WriteLine("Добро пожаловать в Digital Hawk! С этого момента я буду называть вас " + CharacterName +".");
}
открытый статический диалог void(строковое сообщение, цвет ConsoleColor)
{
Цвет Переднего Плана Красный;
Приставка.WriteLine(сообщение);
Приставка.ResetColor();

Приставка.WriteLine("нам нужна ваша помощь" + CharacterName + ", мир разваливается на части!", ForegroundColor.Red);
Приставка.WriteLine("как вы относитесь к тому, чтобы присоединиться к нашим войскам, чтобы спасти мир?");
}


}

внутренние задается класса
{
Цвет Переднего Плана Красный;
}

предмет класс
{
}
классная программа
{
публичный статический пустота главный()
{
Игра.StartGame();
Приставка.Прочитай();

}
}
}


теперь ошибка гласит: переменная "red" объявлена, но никогда не использовалась.
и
Цвет переднего плана.Красный цвет недоступен из-за его уровня защиты

OriginalGriff

Ну да - это правильно!
Если вы сравните мой код с вашим:
статический диалог void(строковое сообщение, цвет ConsoleColor)
{
Приставка.Цвет переднего плана = цвет;
Приставка.WriteLine(сообщение);

против
открытый статический диалог void(строковое сообщение, цвет ConsoleColor)
{
Цвет Переднего Плана Красный;
Приставка.WriteLine(сообщение);

Видите разницу? Почему вы создали класс, чтобы делать то, что у вас уже было?


Member 13752253

Я пытался следовать учебнику по programmingisfun.com при создании "приключенческой" игры я не мог заставить цвета работать из учебника, поэтому я погуглил вещи и, наверное, запутался.

OriginalGriff

Легко сделать! :смеяться:

Member 13752253

Итак, ошибок больше нет, все вроде бы хорошо, только диалог не появляется. :/

OriginalGriff

Какой диалог? Это консольное приложение!

Member 13752253

Я понял диалог, но все еще не могу заставить цвет измениться. Мне придется провести дополнительные исследования. Вы действительно очень помогли мне!

OriginalGriff

Всегда пожалуйста!