C# 光标覆盖控制台应用程序中的文本

C# 光标覆盖控制台应用程序中的文本,c#,C#,我正在构建一个ascii版本的TictaToe作为一个类组件,我遇到了一个问题。光标在书写板和符号 while (pressed == false) { ConsoleKeyInfo cki; cki = Console.ReadKey(); switch (cki.Key) { case ConsoleKey.RightArrow:

我正在构建一个ascii版本的TictaToe作为一个类组件,我遇到了一个问题。光标在书写板和符号

 while (pressed == false)
        {
            ConsoleKeyInfo cki;

            cki = Console.ReadKey();
            switch (cki.Key)
            {
                case ConsoleKey.RightArrow:
                    if(sides+1>Console.WindowWidth)
                        break;
                    if(sides+1==17||sides+1==8)
                    sides+=2;
                else
                    sides += 1;
                    Console.SetCursorPosition(sides, ver);
                    break;
                case ConsoleKey.LeftArrow:
                    if (sides - 1 < 0)
                        break;
                    if (sides -1 == 17 || sides -1 == 8)
                        sides -= 2;
                    else
                    sides -= 1;
                    Console.SetCursorPosition(sides, ver);
                    break;
                case ConsoleKey.DownArrow:
                    if (ver + 1 > Console.WindowHeight)
                        break;
                    if (ver+1==8||ver+1==17)
                        ver += 2;
                    else
                    ver += 1;
                    Console.SetCursorPosition(sides, ver);
                    break;
                case ConsoleKey.UpArrow:
                    if (ver - 1 < 0 )
                        break;
                    if (ver - 1 == 8 || ver - 1 == 17)
                    ver-=2;
                    else
                    ver -= 1;
                    Console.SetCursorPosition(sides, ver);
                    break;
                case ConsoleKey.X:
                case ConsoleKey.O:                        
                    br.PutSign(ver,sides,ch);
                    pressed = true;
                    break;
                default:
                    break;
            }
        }
    }
while(按下==false)
{
ConsoleKeyInfo-cki;
cki=Console.ReadKey();
开关(曲轴钥匙)
{
case ConsoleKey.RightArrow:
如果(侧面+1>控制台窗口宽度)
打破
如果(边+1==17 | |边+1==8)
边数+=2;
其他的
边+=1;
控制台。设置光标位置(侧面、正面);
打破
case ConsoleKey.LeftArrow:
如果(侧面-1<0)
打破
如果(边-1==17 | |边-1==8)
侧面-=2;
其他的
边-=1;
控制台。设置光标位置(侧面、正面);
打破
case ConsoleKey.DownArrow:
if(版本+1>控制台窗口高度)
打破
如果(ver+1==8 | | ver+1==17)
ver+=2;
其他的
ver+=1;
控制台。设置光标位置(侧面、正面);
打破
case ConsoleKey.UpArrow:
如果(版本-1<0)
打破
如果(ver-1==8 | | ver-1==17)
ver-=2;
其他的
ver-=1;
控制台。设置光标位置(侧面、正面);
打破
案例ConsoleKey.X:
案例ConsoleKey.O:
br.PutSign(正面、侧面、侧面);
按下=真;
打破
违约:
打破
}
}
}
我修复了光标覆盖电路板的问题,但我仍然找不到保护符号(X和O)的方法 这是供参考的董事会课程:

public char[,] board = new char[27, 27];

public Board()
{
    for (int i = 0; i < board.GetLength(0); i++)
    {
        for (int j = 0; j < board.GetLength(1); j++)
        {
            if (i==8||i==17)
                board[i, j] = '_';

            if (j==8||j==17)
                board[i, j] = '|';
        }
    }
}

public void PrintB()
{
    for (int i = 0; i < board.GetLength(0); i++)
    {
        for (int j = 0; j < board.GetLength(1); j++)
        {
            Console.Write(board[i, j]);
        }
        Console.WriteLine("");
    }
}
public void PutSign(int row, int col, char ch)
{
    board[row, col] = ch;
}
public char[,]board=新字符[27,27];
公共委员会()
{
for(inti=0;i
这与CMD无关。CMD是一个程序,就像你的一样。对不起,我的错,我应该把标签和名称改成“控制台应用程序”?@hjsv41“保护”字符串是什么意思?是的,它和其他控制台程序一样使用控制台。每当用户将光标放在符号上,字符就会被光标覆盖,直到我再次打印棋盘,玩家才能看到符号(x或o)。