如何绘制二维数组,然后直观地更改其值?



我目前正在开发一种零和交叉的游戏,我想到了如何制作一个 3x3 数组,但不知道如何在控制台窗口中绘制它,接下来我感兴趣的是如何将空格(或带数字的空格)更改为"X"或"O"符号, 手握坐标系。

这就是我已经拥有的,我现在该如何绘制它?

{
int[,] grid = new int[3, 3];
for (int y = 0; y < 3; y++)
{
for (int x = 0; x<3;x++)
{
grid[x, y] = x * y;
}
}
}

当涉及到 2D 数组时,你已经有了嵌套 for 循环的正确想法。这些允许您遍历每一行,然后遍历每一列(如果您将其可视化为矩阵)。

可以使用Console.SetCursorPostion()方法更新控制台视图。控制台中的每个字符都有一个 X 和 Y 坐标,但调用此方法可以将光标放在网格引用处。调用此方法后,写入控制台的任何内容都将从此新位置输出。

注意:当您调用控制台时,控制台不会被清除Console.SetCursorPostion()之后的任何输出都是简单地写在顶部。这意味着,如果在调用该方法后编写的文本比以前的输出短,您仍将看到一些旧输出。

在您的情况下,每次使用移动时,您实际上都可以清除整个控制台,这可以通过Console.Clear().

我在下面写了一个小型演示应用程序,该应用程序从文本文件中读取网格,该文件可以充当井字棋板。默认情况下,网格填充了该特定框的坐标,这是因为该程序非常粗糙,并使用这些文本值来放置玩家去。玩家去存储在一个2D数组中,该数组显示空白值或可以容纳"0"/"X"。

一个简单的阅读行允许用户输入坐标,然后它将用答案填充 2D 数组并重新绘制网格。

十字架永远排在第一位!

我希望这个演示程序能提供一个关于如何重写控制台的好例子,并提供一些关于如何使用 2D 数组实现您的想法的想法。

程序

static void Main(string[] args)
{
int player = 0;
string[,] grid = new string[3, 3] {{"   ","   ","   "},
{"   ","   ","   "},
{"   ","   ","   "} };

string box = System.IO.File.ReadAllText(@"C:Users..Box.txt");
Console.WriteLine(box);
Console.ReadLine();
while (true)
{
Console.WriteLine("Enter Coordinate in 'x,y' Format");
string update = Console.ReadLine();
if (player == 0)
{
string[] coords = update.Split(',');
var x = int.Parse(coords[0]) - 1;
var y = int.Parse(coords[1]) - 1;
grid[x,y] = " X ";
player++;
}
else
{
string[] coords = update.Split(',');
var x = int.Parse(coords[0]) - 1;
var y = int.Parse(coords[1]) - 1;
grid[x, y] = " 0 ";
player--;
}
UpdateGrid(grid, box);
}
}
public static void UpdateGrid(string[,] grid, string box)
{
Console.Clear();
for (int i = 0; i < grid.GetLength(0); i++)
{
for (int j = 0; j < grid.GetLength(1); j++)
{
box = box.Replace((i + 1) + "," + (j + 1), grid[i, j]);
}
}
// In the case not required as clearning the console default the cursor back to 0,0, but left in 
// as an example
Console.SetCursorPosition(0, 0);
Console.WriteLine(box);
}

文本文件

+-----------------+
| 1,1 | 2,1 | 3,1 |
+-----+-----+-----+
| 1,2 | 2,2 | 3,3 |
+-----+-----+-----+
| 1,3 | 2,3 | 3,3 |
+-----------------+

相关内容

最新更新