写的代码较烂,仅供参考
#include <iostream>
#include <vector>
#include<time.h>
#include<algorithm>
using namespace std;
vector<vector<char>> platform;
int ShowPlatform(vector<vector<char>> &platform){
for(int i=0;i<platform.size();++i){
for(int j=0;j<platform[0].size();++j){
cout<<platform[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
// vector<vector<char>> GenerateLandMine(int k,vector<vector<char>> platform){
vector<int> GenerateLandMine(int k){
vector<int> landmine1d;
// vector<vector<char>> res;
for(int i=0;i<100;++i){
// int n=(rand())%100;
landmine1d.push_back(i);
}
random_shuffle(landmine1d.begin(),landmine1d.end());
// res=platform;
// for(int i=0;i<10;++i){
// res[landmine1d[i]/10][landmine1d[i]%10]='x';
// }
vector<int> res;
for(int i=0;i<10;++i){
res.push_back(landmine1d[i]);
}
return res;
}
int get_cow(int sum){
return sum%10;
}
int get_rol(int sum){
return sum/10;
}
int IsSame(vector<vector<int>> mychose,vector<vector<int>> mine){
int hash[100]={0};
int res=0;
vector<int> chose1d;
for(int i=0;i<mychose.size();++i){
chose1d.push_back( mychose[i][0]*10+mychose[i][1]);
++hash[mychose[i][0]*10+mychose[i][1]];
}
vector<int> mine1d;
for(int i=0;i<mine.size();++i){
mine1d.push_back( mine[i][0]*10+mine[i][1]);
++hash[mine[i][0]*10+mine[i][1]];
}
for(int i=0;i<100;++i){
if(hash[i]==2){
++res;
}
}
return res;
}
vector<vector<int>> Choosen_9_dot(int choosen){
vector<vector<int>> choosen_9_dot;
int x1=get_cow(choosen);
int y1=get_rol(choosen);
for(int i=-1;i<2;++i){
for(int j=-1;j<2;++j){
vector<int> vec={};
int x21=0;
int y21=0;
x21=x1+i;
y21=y1+j;
if(i==0 && j==0){
continue;
}
if(x21<0 || y21<0){
continue;
}
vec.push_back(x21);
vec.push_back(y21);
choosen_9_dot.push_back(vec);
}
}
return choosen_9_dot;
}
int Is_land_mine(int choosen,vector<int>landmine){
int res=0;
int x1=get_cow(choosen);
int y1=get_rol(choosen);
vector<vector<int>> choosen_9_dot;
choosen_9_dot=Choosen_9_dot(choosen);
vector<vector<int>> landmine2d;
for(int i=0;i<landmine.size();++i){
int x=get_cow(landmine[i]);
int y=get_rol(landmine[i]);
vector<int> vec={};
vec.push_back(x);
vec.push_back(y);
if(x1==x && y1==y){
cout<<"踩到雷了!"<<endl;
cout"x:"<<x1<<" y:"<<y1<<endl;
cout<<"游戏结束!"<<endl;
for(int j=0;j<10;++j){
platform[landmine[j]/10][landmine[j]%10]='x';
}
cout<<"--------------------------"<<endl;
cout<<"0 1 2 3 4 5 6 7 8 9 "<<endl;
cout<<"----------------------------------"<<endl;
ShowPlatform(platform);
cout<<"----------------------------------"<<endl;
return -1;
}
landmine2d.push_back(vec);
}
res=IsSame(choosen_9_dot,landmine2d);
if(res==0){
for(int i=0;i<choosen_9_dot.size();++i){
int m=choosen_9_dot[i][0];
int n=choosen_9_dot[i][1];
int k=m*10+n;
platform[m][n]=IsSame(Choosen_9_dot(k),landmine2d)+'0';
}
}
return res;
}
int main()
{
srand((int) time(0));
for(int i=0;i<10;++i){
vector<char> vec;
for(int j=0;j<10;++j){
vec.push_back('*');
}
platform.push_back(vec);
}
ShowPlatform(platform);
vector<int> landmine1d= GenerateLandMine(10);
while (1)
{
cout<<"--------------------------------"<<endl;
cout<<"请输入行和列: "<<endl;
int i=0,j=0;
cin>>i>>j;
int chosen1d=i*10+j;
int n_mines=Is_land_mine(chosen1d,landmine1d);
// cout<<n_mines<<endl;
if(n_mines==-1){
return 0;
}
platform[i][j]=(char) n_mines+'0';
cout<<"----------------------------------"<<endl;
cout<<"0 1 2 3 4 5 6 7 8 9 "<<endl;
cout<<"----------------------------------"<<endl;
ShowPlatform(platform);
}
return 0;
}