我正在使用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”,同时保持所有其他内容不变。
随着游戏地图在每个计时器刻度上绘制到网格视图时,我不能只是将该单元格的图像更改为空白图像,因此空白将再次被粗磨代替。
答案 0 :(得分:0)
一种方法是获取字母的坐标,正如乔尔·科恩霍恩(Joel Coehoorn)所述,请使用如下子字符串:
str = str.Substring(0, coordinate) + 'b' + str.Substring(coordinate+1, str.length())
其中坐标是字符串中字符的位置。