添加第二个调用另一个方法的命令?

时间:2017-09-12 00:40:59

标签: c#

我正在改造基于文本的冒险游戏。在角色创建过程中,我希望用户可以随时键入“技能组”并列出特定种族所具有的所有特征。我已经尝试了几个小时,似乎无法弄明白。

这是我的角色创作课。

public string userCommand_SeachSkill;

    SkillSet searchSkill = new SkillSet();

    public void Create_Character()
    {

        // CHOOSE GENDER //
        do
        {
            validate = 0;
            Console.Clear();
            Console.Write("Are you male or female? (f/m): ");
            Sex = Console.ReadLine().ToUpper();


            if (Sex == "M" || Sex == "F")
            {
                validate = 1;  
            }
            else if (Sex != "M" || Sex != "F")
            {
                Console.WriteLine("You must enter 'm' or 'f'");
            }


        } while (validate == 0);

这是我的技能组课程。 if / else语句中的所有内容都是将竞赛特征打印到控制台的方法。让我知道是否还有什么我可以添加以更好地提出我的问题。先感谢您! :)

ClassAttributes classes = new ClassAttributes();
Character character = new Character();
skillset = Console.ReadLine().ToUpper();
        do
        {
            validate = 0;
            if (skillset == "HUMAN")
            {
                classes.SkillSetHuman();
            }
            else if (skillset == "ORC")
            {
                classes.SkillSetOrc();
            }
            else if (skillset == "ELF")
            {
                classes.SkillSetElf();
            }
            else if (skillset == "EXIT")
            {
                validate = 1;
                character.Create_Character();
            }

        } while (validate == 0);

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找像event这样的东西。 C#控制台应用程序似乎只有一种事件,它会在ctrl + c或ctrl + break发生时触发。您可以在函数处理程序

中处理您的技能组输入/输出逻辑

您可以在这里阅读更多内容: https://msdn.microsoft.com/library/system.console.cancelkeypress(v=vs.110).aspx

如果您确实需要键入单词,则可以捕获在特殊函数中键入的所有内容,而不是使用常规的Console.ReadLine()。像这样:

    public static string CustomReadLine()
    {

        ConsoleKeyInfo cki;
        string capturedInput = "";

        while (true)
        {

            cki = Console.ReadKey(true);
            if (cki.Key == ConsoleKey.Enter)
                break;
            else if (cki.Key == ConsoleKey.Spacebar)
            {
                capturedInput += " ";
                Console.Write(" ");
            }
            else if (cki.Key == ConsoleKey.Backspace)
            {
                capturedInput = capturedInput.Remove(capturedInput.Length - 1);
                Console.Clear();
                Console.Write(capturedInput);
            }
            else
            {
                capturedInput += cki.KeyChar;
                Console.Write(cki.KeyChar);
            }

            if (capturedInput.ToUpper().Contains("SKILLSET"))
            {
                capturedInput = "";
                skillsetTyped();
                return "";
            }
        }

        return capturedInput;
}

然后在你的Create_Character中,执行

...
    do
    {
        Console.Write("Are you male or female? (f/m): ");
        Sex = CustomReadLine();
    } while (String.IsNullOrEmpty(sex));

最后,在这里处理技能组逻辑

protected static void skillsetTyped()
{
    Console.Write("\nWrite your skillset capture/display logic here\n");
}

这只是一个草案并且有一些小错误,但我相信它接近你真正想要的。