在给定条件有效之前如何显示字符串,但不再显示(控制台应用程序)

时间:2018-11-06 16:45:28

标签: c# console-application

我正在制作一个控制台冒险游戏供练习,当角色靠近某个物体(在相邻位置)时,我需要显示一个文本。必须显示该字符串,直到字符靠近对象为止,但是如果进一步移动,则文本将消失。

我尝试过:

        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)'放入其他内容,但是它没有删除已经显示的字符串(顺便说一句,为什么会发生?)。

谢谢!

1 个答案:

答案 0 :(得分:1)

字符串的.Remove()方法返回一个新字符串,其中包含从给定索引开始未删除的其余字符。使用0进行调用意味着将其从索引0中删除,并返回其余的空字符串。如果您向控制台写入一个空字符串,则看起来它什么都没做。

您还可以用动态大小的空白填充字符串替换 whitespacing 硬编码字符串,如下所示:

var clearChars = new string(' ', notice_detection.Length);
Console.SetCursorPosition(37, 0);
Console.Write(clearChars);