如何更改字符串中的单个字符

时间:2018-11-03 02:27:37

标签: c# winforms

我正在使用C#形式的数据网格视图创建pacman游戏。我已经从一个字符串创建了游戏地图:

private string INITMAP =               "wwwwwwwwwwwwwwwwwwww"+
                                       "wkkkkkkkkkkkkkkkkkkw"+
                                       "wkwwkwwwwkwwwwwwkwkw"+
                                       "wkwwkkkkkkwwkkkkkwkw"+
                                       "wkkkkwwwwkwwkwkwkkkw"+
                                       "wkwwkwkkkkwwkwkwkwkw"+
                                       "wkwwkwwwwkwwkwwwkwkw"+
                                       "wkwwkkbbbbbbbkkkkwkw"+
                                       "wkwwwwbwbbbwbwwkwkkw"+
                                       "wkkkkkbwbbbwbwwkkwkw"+
                                       "wkwkwwbwbbbwbkkkwkkw"+
                                       "wkwwkwbwwwwwbwwwwwkw"+
                                       "wkkkkkbbbbbbbkkkkkkw"+
                                       "wkwwwwkwkwwwwkwkwwkw"+
                                       "wkwkkkkwkkkwwkwkkwkw"+
                                       "wkwwkwkwkwkwwkkkwwkw"+
                                       "wkkkkwkwkwkwwkwkkkkw"+
                                       "wkwwkwkwkwkwwkwwkwkw"+
                                       "wkkkkkkkkkkkkkkkkkkw"+
                                       "wwwwwwwwwwwwwwwwwwww";
public void Draw()
int totalCells = NROWSCOLUMNS * NROWSCOLUMNS;

        for (int i = 0; i < totalCells; i++)
        {
            int nRow = i / NROWSCOLUMNS;
            int nColumn = i % NROWSCOLUMNS;

            switch (map.Substring(i, 1))
            {
                case "w":
                    Rows[nRow].Cells[nColumn].Value = wall;
                    break;
                case "k":
                    Rows[nRow].Cells[nColumn].Value = kibble;
                    break;
                case "b":
                    Rows[nRow].Cells[nColumn].Value = blank;
                    break;
                default:
                    MessageBox.Show("Unidentified value in string");
                    break;
            }
        }

然后使用上述代码将图像绘制到每个单元格中。

当pacman碰粗磨时,我需要它来将字符串中的'k'替换为'b'。例如,如果粗粒数据位于数据网格视图上的(1,1),我需要一些如何将INITMAP字符串中第21位的“ k”更改为“ b”,同时保持所有其他内容不变。

随着游戏地图在每个计时器刻度上绘制到网格视图时,我不能只是将该单元格的图像更改为空白图像,因此空白将再次被粗磨代替。

1 个答案:

答案 0 :(得分:0)

一种方法是获取字母的坐标,正如乔尔·科恩霍恩(Joel Coehoorn)所述,请使用如下子字符串:

str = str.Substring(0, coordinate) + 'b' + str.Substring(coordinate+1, str.length())

其中坐标是字符串中字符的位置。