学了10天c++做的扫雷
2024-02-10 20:16:26
发布于:浙江
标记雷点我懒得做
做了一坨钩式
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<ctime>
using namespace std;
bool ynin(int x,int y[1000]){
for(int i=0;i<=100;i++){
if(x==y[i]) return true;
}
return false;
}
int where(int x,int y[1000]){
for(int i=0;i<=100;i++){
if(x==y[i]) return i;
}
return -1;
}
struct danweige{
int ls=0;
bool flag=0;
};
int xyc[2][1000];
int main(){
int daxiao;
danweige arr[35][35];
while(1){
cout<<"请输入地图大小(5~30格)"<<" "<<endl;
cin>>daxiao;
if(daxiao<=30&&daxiao>=5) break;
else cout<<"数据范围是5~30!"<<endl;
}
int ruo;
while(1){
cout<<"请输入地雷密度(6~20,数字越大,地雷越少)"<<" "<<endl;
cin>>ruo;
if(ruo<=20&&ruo>=6) break;
else cout<<"数据范围是6~20!"<<endl;
}
int shu=0;
for(int i=0;i<daxiao;i++){
for(int j=0;j<daxiao;j++){
int num=rand()%ruo+1;
if(num==1||num==2||num==3||num==4||num==5){
arr[i][j].flag=1;
shu++;
}
}
}
for(int i=0;i<daxiao;i++){
for(int j=0;j<daxiao;j++){
if(arr[i][j].flag==1){
if(i-1>=0&&j+1>=0) arr[i-1][j+1].ls++;
if(i-1>=0&&j>=0) arr[i-1][j].ls++;
if(i-1>=0&&j-1>=0) arr[i-1][j-1].ls++;
if(i>=0&&j-1>=0) arr[i][j-1].ls++;
if(i+1>=0&&j-1>=0) arr[i+1][j-1].ls++;
if(i+1>=0&&j>=0) arr[i+1][j].ls++;
if(i+1>=0&&j+1>=0) arr[i+1][j+1].ls++;
if(i>=0&&j+1>=0) arr[i][j+1].ls++;
/*检测地雷数量,在地雷周围九宫格加一*/
}
}
}
for(int i=0;i<daxiao;i++){
for(int j=0;j<daxiao;j++){
cout<<'#'<<" ";
}
cout<<endl;
}
int sum=0;
cout<<"一共有"<<shu<<"个雷"<<endl;
while(1){
int x[1000],y[1000];
cin>>xyc[0][sum]>>xyc[1][sum];
xyc[0][sum]--;
xyc[1][sum]--;
if(arr[xyc[0][sum]][xyc[1][sum]].flag==1){
cout<<"你炸了";
return 0;
}
else{
for(int i=0;i<daxiao;i++){
for(int j=0;j<daxiao;j++){
x[j]=xyc[0][j];
y[j]=xyc[1][j];
}
for(int j=0;j<daxiao;j++){
if(ynin(j,x)&&ynin(i,y)&&where(j,x)==where(i,y)) cout<<arr[i][j].ls<<" ";
else if(ynin(1,x)&&ynin(1,y)) cout<<arr[i][j].ls<<" ";
else cout<<'#'<<" ";
}
cout<<endl;
}
}
sum++;
}
return 0;
}
全部评论 1
哈哈哈这哪个乐子做的bug
2024-02-10 来自 浙江
0你
2024-02-17 来自 山东
06
2024-02-17 来自 浙江
0
有帮助,赞一个