Я создаю игру 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', оставив все остальное таким же.
Я не могу просто изменить изображение этой ячейки на пустое изображение, так как игровая карта обращается к сетке при каждом тике таймера, поэтому пробел будет заменен на этот кусочек снова.