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