Minesweeper
一个简单的扫雷游戏模拟。
#include <bits/stdc++.h>
using namespace std;
int h,w;
char s[51][51];
int f(int x,int y){
int ans=0;
if (s[x-1][y-1] == '#') ans++;
if (s[x-1][y] == '#') ans++;
if (s[x-1][y+1] == '#') ans++;
if (s[x][y-1] == '#') ans++;
// if (s[x][y] == '#') // 中间不算
if (s[x][y+1] == '#') ans++;
if (s[x+1][y-1] == '#') ans++;
if (s[x+1][y] == '#') ans++;
if (s[x+1][y+1] == '#') ans++;
return ans;
}
int main(){
cin>>h>>w;
for (int i=0;i<h;i++){
for (int j=0;j<w;j++){
cin>>s[i][j];
}
}
for (int i=0;i<h;i++){
for (int j=0;j<w;j++){
if (s[i][j] == '.'){
int temp = f(i,j);
s[i][j] = temp + '0';
}
}
}
for (int i=0;i<h;i++){
for (int j=0;j<w;j++){
cout<<s[i][j];
}
cout<<endl;
}
// system("pause");
return 0;
}
这里是用了f
函数以检测四周的地雷情况,返回地雷数量。
在for
循环中通过temp+'0'
将数字转字符并储存
就可以愉快的AC啦~