我正在制作一个控制台冒险游戏供练习,当角色靠近某个物体(在相邻位置)时,我需要显示一个文本。必须显示该字符串,直到字符靠近对象为止,但是如果进一步移动,则文本将消失。
我尝试过:
if (field[ver, hor + 1] == '█')
{
notice_detection = "DETECTION: '█' (right)";
Console.SetCursorPosition(37, 0);
Console.Write(notice_detection);
}
else
{
if (notice_detection != null)
{
notice_detection = " ";
Console.SetCursorPosition(37, 0);
Console.Write(notice_detection);
}
}
它正在工作,但不太优雅。我确定存在更好的解决方案。
我的第一个尝试是将'notice_detection.Remove(0)'放入其他内容,但是它没有删除已经显示的字符串(顺便说一句,为什么会发生?)。
谢谢!
答案 0 :(得分:1)
字符串的.Remove()
方法返回一个新字符串,其中包含从给定索引开始未删除的其余字符。使用0
进行调用意味着将其从索引0
中删除,并返回其余的空字符串。如果您向控制台写入一个空字符串,则看起来它什么都没做。
您还可以用动态大小的空白填充字符串替换 whitespacing 硬编码字符串,如下所示:
var clearChars = new string(' ', notice_detection.Length);
Console.SetCursorPosition(37, 0);
Console.Write(clearChars);