我正在改造基于文本的冒险游戏。在角色创建过程中,我希望用户可以随时键入“技能组”并列出特定种族所具有的所有特征。我已经尝试了几个小时,似乎无法弄明白。
这是我的角色创作课。
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);
答案 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");
}
这只是一个草案并且有一些小错误,但我相信它接近你真正想要的。