如何让角色看起来像是在移动?

时间:2016-03-11 12:41:52

标签: c#

我目前正在学习C#编程,我不太了解。我只掌握了关于这个程序的基本知识,所以当你回答我的时候,如果你向我详细解释这些代码,我将非常感激。

我们把字母'a'。我想使用For循环使字母每2秒向右移动一次。为了让它工作2秒我使用代码:System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2)); 此代码将包含在循环内。 我的问题是,我不知道将'a'替换为'space',并且在空格之后,字母'a'将显示出来。 像这样:

a

2秒后,我想让'a'向右移动:

 a

我正在搜索可以用'空格'替换字母的代码,并在空格后添加字母'a'。 代码应该在For循环中运行10次,使字母向右移动10次。 请注意,我不想删除整个输出,只删除字母'a'。

我真的不知道如何更好地解释我的问题。 提前谢谢。

编辑:我正在使用Microsoft Visual C#2010 Express。控制台应用。 static void Main(string[] args) (可能有帮助)

4 个答案:

答案 0 :(得分:1)

尝试此操作(您可以使用给定的偏移量和位置调用此方法)。您可以负责跟踪当前的非空位置:

        public void Move(char[] input, int position, int offset, int direction) {
        int newPosition;

        if (direction == 0) {
            //Move Left
            newPosition = position - offset;
        }
        else {
            //Move Right
            newPosition = position + offset;
        }

        if (newPosition < 0 || newPosition > input.Length-1) {
            throw new ArgumentException("Offset is invalid", "offset");
        }
        input[newPosition] = input[position];
        input[position] = ' ';
    }

答案 1 :(得分:0)

我不知道你为什么需要这个,但这里是代码:

static void Main(string[] args)
    {
        string a = "a";
        for (int i = 0; i < 100; i++)
        {
            Console.Clear();
            Console.Write(a);
            a = " " + a;
            System.Threading.Thread.Sleep(100);
        }
    }

希望它有所帮助。

答案 2 :(得分:0)

您可以像这样使用计时器:

Console.Write("a");
Timer timer = new Timer(200);
timer.Elapsed += (object sender, ElapsedEventArgs e) =>
    {
        Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
        Console.Write(" a");
    };
timer.Start();

答案 3 :(得分:0)

这里试试这个

    string sampleString="a";

    Console.WriteLine(sampleString);


    for(int i=0;i<10;i++)
    {
      Thread.Sleep(2000)// 2 seconds sleep

      Console.SetCursorPosition(0, Console.CursorTop -1);
      sampleString=" "+sampleString;
      Console.WriteLine(sampleString);

   }