我正在重新制作一个基于文本的冒险游戏。在角色创建过程中,我想让用户在任何时候输入'skillset‘,并列出特定种族拥有的所有特征。我已经试了几个小时了,似乎还是想不通。
这是我的角色创建类。
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);发布于 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()。如下所示:
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");
}这只是一个草案,有一些小错误,但我相信它接近你真正想要的。
https://stackoverflow.com/questions/46166243
复制相似问题