c# - 如何更改字符串中的单个字符
问题描述
我正在使用 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”,同时保持其他所有内容相同。
当游戏地图在每个计时器滴答时绘制到网格视图时,我不能只是将该单元格的图像更改为空白图像,因此空白将再次被该粗磨食品替换。
解决方案
一种方法是获取字母的坐标,正如 Joel Coehoorn 提到的,使用这样的子字符串:
str = str.Substring(0, coordinate) + 'b' + str.Substring(coordinate+1, str.length())
其中坐标是字符串中字符的位置。
推荐阅读
- java - javax.net.ssl.SSLPeerUnverifiedException:没有对等证书 [Android]
- amazon-web-services - Unable to pass a params from POST to AWS Lambda from Amazon API Gateway for Golang
- postgresql - 如何在另一个“插入”查询中使用“记录”类型的变量字段?
- regex - 关键字后的正则表达式分组
- php - 从excel文件将数据显示到数据库
- python - Python-Arduino 串行半双工:Arduino 读取以前的串行输入而不是当前的
- node.js - ng build 找不到模块
- csv - Apache Drill 无法正确解析带有 Windows EOL 的 CSV 文件?
- sql - GO 的 T-SQL 等价物
- c++ - 在 C++ 中使用全局变量进行练习