【问题标题】:Cursor position in c#c#中的光标位置
【发布时间】:2019-02-20 16:02:08
【问题描述】:

如果我的问题很愚蠢,我只是一个初学者,很抱歉。我正在制作询问矩形大小(AxB)并绘制它的程序。但我还需要它来询问矩形的位置(X,Y)。有什么方法可以在 c# 控制台应用程序中设置一个光标位置,它的工作时间比只在矩形的上部工作的时间长吗?或者一些简单的事情会实现它?以下是部分代码:

int a;
int b;
int x;
int y;
Console.WriteLine("A");
a = int.Parse(Console.ReadLine());
Console.WriteLine("B");
b = int.Parse(Console.ReadLine());
Console.WriteLine("X");
x = int.Parse(Console.ReadLine());
Console.WriteLine("Y");
y = int.Parse(Console.ReadLine());
Console.Clear();
Console.SetCursorPosition(x, y);
for (int i = 0; i < a; i++)
    Console.Write("*");
Console.Write("\n");
for (int i = 0; i < b - 2; i++)
{
    Console.Write("*");
    for (int k = 0; k < a - 2; k++)
        Console.Write(" ");
    Console.Write("*");
    Console.Write("\n");
}
for (int i = 0; i < a; i++)
    Console.Write("*");
Console.Write("\n");   

【问题讨论】:

  • "...这将比仅一行工作更长的时间?"嗯?我不明白你在这里的意思。另外,我没有看到您在该代码中的任何位置设置光标位置。你想做什么?将图像向右平移?
  • @itsme86 对不起,英语不是我的第一语言。我已经编辑了我的问题,我希望现在更容易理解。我正在尝试制作一个程序,该程序将在 X,Y 位置绘制一个矩形 AxB。但是 a,b,x,y 将由用户输入。

标签: c# console position text-cursor


【解决方案1】:

到目前为止,这不是最有效或最优雅的解决方案,但它可以满足您的需求:

        int a;
        int b;
        int x;
        int y;
        Console.WriteLine("A");
        a = int.Parse(Console.ReadLine());
        Console.WriteLine("B");
        b = int.Parse(Console.ReadLine());
        Console.WriteLine("X");
        x = int.Parse(Console.ReadLine());
        Console.WriteLine("Y");
        y = int.Parse(Console.ReadLine());
        Console.Clear();
        Console.SetCursorPosition(x, y);

        for (int i = 0; i < y; i++) //this for will print all the "y" line breaks before your picture prints
        {
            Console.Write("\n");
        }

        for (int j = 0; j < x; j++)
        {
            Console.Write(" ");
        }

        for (int i = 0; i < a; i++)
            Console.Write("*");
        Console.Write("\n");

        for (int i = 0; i < b - 2; i++)
        {
            for (int j = 0; j < x; j++) //This for will print x spaces before each line
            {
                Console.Write(" ");
            }
            Console.Write("*");
            for (int k = 0; k < a - 2; k++)
                Console.Write(" ");
            Console.Write("*");
            Console.Write("\n");
        }
        for (int j = 0; j < x; j++)
        {
            Console.Write(" ");
        }
        for (int i = 0; i < a; i++)
            Console.Write("*");
        Console.Write("\n");

        Console.ReadLine();

只需要在正确的地方打印一些额外的换行符和空格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多