替换字符串数组中的特定值
本文关键字:字符串 数组 替换 | 更新日期: 2023-09-27 17:59:17
我这个程序的目标是创建一个网格,用户可以在其中导航。到目前为止,我已经创建了网格,但我一直在研究如何使用它,以便在数组字符串[3,6]的任何位置,我都可以用播放器符号"p"替换其中一个"-",并且每次播放器移动时,控制台都会打印播放器的位置。
例如。我希望玩家从字符串[2,5]开始,"-"将被替换为"P",并且在玩家移动[2,5]处的"-"后返回。
但我的主要关注点是找出如何用玩家替换阵列中的任何点。
希望它是明确的
string[,] table = new string[3,6] { {"-","-","-","-","-","-"},
{"-","-","-","-","-","-"},
{"-","-","-","-","-","-"}};
int rows = grid.GetLength(0);
int col = grid.GetLength(0);
for (int x = 0; x < rows; x++)
{
for (int y = 0; y < col; y++)
{
Console.Write ("{0} ", grid [x, y]);
}
Console.Write (Environment.NewLine + Environment.NewLine);
}
我尝试过使用.Replace,但到目前为止没有成功
我会这样做:
private static int playerX, playerY;
public static void MovePlayer(int x, int y)
{
table[playerX, playerY] = "-"; //Remove old position
table[x, y] = "P"; //Update new position
playerX = x; //Save current position
playerY = y;
UpdateGrid();
}
您所要做的就是将元素设置为"P"
来更改它,这并不奇怪。
要更新网格,有两个选项,一个是重新绘制所有内容,另一个是设置光标位置并更改角色。
示例:
SetCursorPosition(playerX, playerY);
Console.Write("-");
SetCursorPosition(x, y);
Console.Write("P");
或者,使用您现在拥有的代码再次调用它来重写所有内容。
另一种方法是使用Console.SetCursorPosition()将玩家绘制在正确的位置-请参阅我的博客文章以获取示例。
作为一种替代方案,您可以完全放弃网格:
Point playerLocation = new Point(10, 10);
Size boundary = new Size(20, 20);
void Draw()
{
for (int y = 0; y < boundary.Height; y++)
for (int x = 0; x <= boundary.Width; x++)
Console.Write(GetSymbolAtPosition(x, y));
}
string GetSymbolAtPosition(int x, int y)
{
if (x >= boundary.Width)
return Environment.NewLine;
if (y == playerLocation.Y && x == playerLocation.X)
return "P";
return "-";
}
这样,您就不必为了更新屏幕而更新网格。当你改变玩家的位置时,它会在下次抽奖时更新屏幕。