专栏文章
minesweeper
科技·工程参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @min7t8ag
- 此快照首次捕获于
- 2025/12/01 21:58 3 个月前
- 此快照最后确认于
- 2025/12/01 21:58 3 个月前
-1.x
-1.0.0
CPP/*
Compiler: C++17 +
*/
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring>
using namespace std;
struct game_set{
int n,m,cnt;
};
int fl[60][60];
int status[60][60];
bool judgeAdj(int x1,int y1,int x2,int y2){
return max(abs(x1-x2),abs(y1-y2))<=1;
}
int limit(int mod){
return RAND_MAX-RAND_MAX%mod;
}
bool judgeKdLt(char ch,char tgt){
return ch==tgt||ch==tgt-32;
}
bool judgeKd(char ch,char tgt){
return ch==tgt;
}
game_set menu(){
cout<<"Minesweeper -1.0.\n";
cout<<"[0] Easy (9,9,10)\n";
cout<<"[1] Medium (16,16,40)\n";
cout<<"[2] Expert (16,30,99)\n";
cout<<"[3] Custom\n";
char ch=getch();
while(1){
if(judgeKd(ch,'0'))return {9,9,10};
else if(judgeKd(ch,'1'))return {16,16,40};
else if(judgeKd(ch,'2'))return {16,30,99};
else if(judgeKd(ch,'3')){
system("clear");
game_set gs;
cout<<"Row:";cin>>gs.n;
cout<<"Column:";cin>>gs.m;
cout<<"Mine count:";cin>>gs.cnt;
return gs;
}else{
system("clear");
cout<<"Minesweeper 0.0.\n";
cout<<"[0] Easy (9,9,10)\n";
cout<<"[1] Medium (16,16,40)\n";
cout<<"[2] Expert (16,30,99)\n";
cout<<"[3] Custom\n";
cout<<"(Invaild operation)\n";
ch=getch();
}
}
}
void game_init(game_set gs,int fx,int fy){
auto [n,m,cnt]=gs;
system("clear");
memset(fl,0,sizeof fl);
memset(status,0,sizeof status);
while(cnt--){
int cx,cy;
do{
cx=rand(),cy=rand();
}while(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx,cy,fx,fy));
fl[cx][cy]=-1;
cnt--;
}
for(int i=0;i<n;i++)for(int j=0;j<m;j++){
if(fl[i][j]==-1)continue;
for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
if(fl[ii][jj]==-1)fl[i][j]++;
}
}
}
int main(){
game_set gs=menu();
game_init(gs,0,0);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(fl[i][j]==-1)cout<<"* ";
else if(fl[i][j]==0)cout<<". ";
else cout<<fl[i][j]<<" ";
}
cout<<"\n\n";
}
}
-1.0.1
CPP/*
Compiler: C++17 +
*/
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring>
using namespace std;
#define c++14
struct game_set{
int n,m,cnt;
};
int fl[60][60];
int status[60][60];
bool judgeAdj(int x1,int y1,int x2,int y2){
return max(abs(x1-x2),abs(y1-y2))<=1;
}
int limit(int mod){
return RAND_MAX-RAND_MAX%mod;
}
bool judgeKdLt(char ch,char tgt){
return ch==tgt||ch==tgt-32;
}
bool judgeKd(char ch,char tgt){
return ch==tgt;
}
game_set menu(){
cout<<"Minesweeper -1.0.\n";
cout<<"[0] Easy (9,9,10)\n";
cout<<"[1] Medium (16,16,40)\n";
cout<<"[2] Expert (16,30,99)\n";
cout<<"[3] Custom\n";
char ch=getch();
while(1){
if(judgeKd(ch,'0'))return {9,9,10};
else if(judgeKd(ch,'1'))return {16,16,40};
else if(judgeKd(ch,'2'))return {16,30,99};
else if(judgeKd(ch,'3')){
system("clear");
game_set gs;
cout<<"Row:";cin>>gs.n;
cout<<"Column:";cin>>gs.m;
cout<<"Mine count:";cin>>gs.cnt;
return gs;
}else{
system("clear");
cout<<"Minesweeper 0.0.\n";
cout<<"[0] Easy (9,9,10)\n";
cout<<"[1] Medium (16,16,40)\n";
cout<<"[2] Expert (16,30,99)\n";
cout<<"[3] Custom\n";
cout<<"(Invaild operation)\n";
ch=getch();
}
}
}
void game_init(game_set gs,int fx,int fy){
int n=gs.n,m=gs.m,cnt=gs.cnt;
system("cls");
memset(fl,0,sizeof fl);
memset(status,0,sizeof status);
while(cnt--){
int cx,cy;
do{
cx=rand(),cy=rand();
cout<<cx<<" "<<cy<<"\n";
}while(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx,cy,fx,fy));
fl[cx][cy]=-1;
cnt--;
}
for(int i=0;i<n;i++)for(int j=0;j<m;j++){
if(fl[i][j]==-1)continue;
for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
if(fl[ii][jj]==-1)fl[i][j]++;
}
}
}
int main(){
srand(time(0));
game_set gs=menu();
game_init(gs,0,0);
int n=gs.n,m=gs.m,cnt=gs.cnt;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(fl[i][j]==-1)cout<<"* ";
else if(fl[i][j]==0)cout<<". ";
else cout<<fl[i][j]<<" ";
}
cout<<"\n\n";
}
}
-1.2.0
CPP/*
Compiler: C++14 +
*/
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring>
using namespace std;
#define c++14
struct game_set{
int n,m,cnt;
};
int fl[1010][1010];
int status[1010][1010];
bool judgeAdj(int x1,int y1,int x2,int y2){
return max(abs(x1-x2),abs(y1-y2))<=1;
}
int limit(int mod){
return RAND_MAX-RAND_MAX%mod;
}
bool judgeKdLt(char ch,char tgt){
return ch==tgt||ch==tgt-32;
}
bool judgeKd(char ch,char tgt){
return ch==tgt;
}
game_set menu(){
cout<<"Minesweeper -1.0.2.\n";
cout<<"[1] Easy (9,9,10)\n";
cout<<"[2] Medium (16,16,40)\n";
cout<<"[3] Expert (16,30,99)\n";
cout<<"[4] Custom\n";
char ch=getch();
while(1){
if(judgeKd(ch,'1'))return {9,9,10};
else if(judgeKd(ch,'2'))return {16,16,40};
else if(judgeKd(ch,'3'))return {16,30,99};
else if(judgeKd(ch,'4')){
system("cls");
game_set gs;
cout<<"Row:";cin>>gs.n;
cout<<"Column:";cin>>gs.m;
cout<<"Mine count:";cin>>gs.cnt;
while(gs.n>=100||gs.m>=100||gs.cnt>gs.n*gs.m-9){
system("cls");
cout<<"Too large!\n";
cout<<"Row:";cin>>gs.n;
cout<<"Column:";cin>>gs.m;
cout<<"Mine count:";cin>>gs.cnt;
}
return gs;
}else{
system("cls");
cout<<"Minesweeper -1.0.2.\n";
cout<<"[1] Easy (9,9,10)\n";
cout<<"[2] Medium (16,16,40)\n";
cout<<"[3] Expert (16,30,99)\n";
cout<<"[4] Custom\n\n";
cout<<"(Invaild operation)\n";
ch=getch();
}
}
}
void game_init(game_set gs,int fx,int fy){
int n=gs.n,m=gs.m,cnt=gs.cnt;
system("cls");
memset(fl,0,sizeof fl);
memset(status,0,sizeof status);
while(cnt--){
int cx,cy;
do{
cx=rand(),cy=rand();
// cout<<cx<<" "<<cy<<" "<<limit(n)<<" "<<limit(m)<<"\n";
}while(!(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx%n,cy%m,fx,fy)));
fl[cx%n][cy%m]=-1;
// cout<<"[ok] "<<cnt<<"\n";
}
for(int i=0;i<n;i++)for(int j=0;j<m;j++){
if(fl[i][j]==-1)continue;
for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
if(fl[ii][jj]==-1)fl[i][j]++;
}
}
}
int main(){
srand(time(0));
game_set gs=menu();
game_init(gs,8,15);
int n=gs.n,m=gs.m,cnt=gs.cnt;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(fl[i][j]==-1)cout<<"* ";
else if(fl[i][j]==0)cout<<". ";
else cout<<fl[i][j]<<" ";
}
cout<<"\n\n";
}
}
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...