C#控制台应用程序|移动一个角色

时间:2015-11-25 19:03:45

标签: c# key console-application move

首先,我想道歉,因为这可能是在我之前提出来的。然而,无论我在哪里,我都找不到答案。 我想做一个特定的角色移动(不断地,或通过某个键)。 通过移动我的意思是它改变它在屏幕上的位置。我不认为我真的了解它,但我认为你可以只使用for循环并在每个字符之前添加一个空格。如果可能的话,我想知道如何制作这个for循环。 例如: 运行程序时,您会看到: * 然后按下一个键或不断按下(如前所述):  * 如你所见,角色向右移动。但我想知道如何让它向各个方向移动(向上,向下等)

1 个答案:

答案 0 :(得分:1)

希望这足够好。运行代码,然后按箭头键移动星号。从这里获得灵感:https://msdn.microsoft.com/en-us/library/system.console.setcursorposition(v=vs.110).aspx

public class Program
{
    public static void Main(string[] args)
    {
        const char toWrite = '*'; // Character to write on-screen.

        int x = 0, y = 0; // Contains current cursor position.

        Write(toWrite); // Write the character on the default location (0,0).

        while (true)
        {
            if (Console.KeyAvailable)
            {
                var command = Console.ReadKey().Key;

                switch (command)
                {
                    case ConsoleKey.DownArrow:
                        y++;
                        break;
                    case ConsoleKey.UpArrow:
                        if (y > 0)
                        {
                            y--;
                        }
                        break;
                    case ConsoleKey.LeftArrow:
                        if (x > 0)
                        {
                            x--;
                        }
                        break;
                    case ConsoleKey.RightArrow:
                        x++;
                        break;
                }

                Write(toWrite, x, y);
            }
            else
            {
                Thread.Sleep(100);
            }
        }
    }

    public static void Write(char toWrite, int x = 0, int y = 0)
    {
        try
        {
            if (x >= 0 && y >= 0) // 0-based
            {
                Console.Clear();
                Console.SetCursorPosition(x, y);
                Console.Write(toWrite);
            }
        }
        catch (Exception)
        {
        }
    }
}