首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加第二个调用另一个方法的命令?

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

Stack Overflow用户
提问于 2017-09-12 08:40:59
回答 1查看 67关注 0票数 0

我正在重新制作一个基于文本的冒险游戏。在角色创建过程中,我想让用户在任何时候输入'skillset‘,并列出特定种族拥有的所有特征。我已经试了几个小时了,似乎还是想不通。

这是我的角色创建类。

代码语言:javascript
复制
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语句中的所有内容都是将种族特征打印到控制台的方法。如果还有什么我可以补充的,请告诉我,以便更好地提出问题。提前感谢!:)

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2017-09-12 10:14:58

我想你要找的是像event这样的东西。C#控制台应用程序似乎只有一种事件,它会在ctrl+c或ctrl+break发生时触发。您可以在函数处理程序中处理技能集输入/输出逻辑

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

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

代码语言:javascript
复制
    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中,做

代码语言:javascript
复制
...
    do
    {
        Console.Write("Are you male or female? (f/m): ");
        Sex = CustomReadLine();
    } while (String.IsNullOrEmpty(sex));

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

代码语言:javascript
复制
protected static void skillsetTyped()
{
    Console.Write("\nWrite your skillset capture/display logic here\n");
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46166243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档