Как изменить один символ в строке - PullRequest
0 голосов
/ 03 ноября 2018

Я создаю игру pacman с использованием Data Grid View в формах C #. Я создал карту игры из строки:

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), мне нужно кое-как изменить значение 'k' в позиции 21 в строке INITMAP на значение 'b', оставив все остальное таким же.

Я не могу просто изменить изображение этой ячейки на пустое изображение, так как игровая карта обращается к сетке при каждом тике таймера, поэтому пробел будет заменен на этот кусочек снова.

1 Ответ

0 голосов
/ 03 ноября 2018

Один из способов сделать это - получить координату буквы, и, как упоминал Джоэл Кехорн, использовать подстроку так:

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

где координата - это позиция символа в вашей строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...