求重构
  • 板块灌水区
  • 楼主__owowow__
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/8 15:24
  • 上次更新2024/6/8 18:54:13
查看原帖
求重构
1333713
__owowow__楼主2024/6/8 15:24

这是我的一个扫雷代码,求dalao帮忙改进一下,就是如果翻开了数字零,就把周围八连通也翻开。

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int n,boom=0,x,y,open_boom=0;
int num[13][13],up_not[13][13];
int what;
void add(int y,int x);
void print_not(int n);
int _boom(int _y,int _x);
void print_true(int n);
int main(){
	srand(time(0));
	printf("请输入扫雷的边长是几个格子(最多11) ");
	scanf("%d",&n);
	while(boom!=n){
		x=rand()%n+1,y=rand()%n+1;
		if(num[y][x]!=66) {
			num[y][x]=66;
			boom++;
			add(x,y);

		}
	}


	for(int i=1;i<=n*n;i++){
		print_not(n);
		printf("请问要干什么?(翻格子打一/插雷打二) ");
		scanf("%d",&what);
		if(what==1){
			printf("请问要翻哪一个格子? ");
			scanf("%d %d",&y,&x);
			up_not[y][x]=1;
			if(_boom(y,x)) {
				printf("Boom!");
				print_true(n);
				Sleep(10000);
				return 0;
			}
			else up_not[y][x]=1;
			system("cls");
		}
		else if(what==2){
			printf("请问要在哪一个格子插雷? ");
			scanf("%d %d",&y,&x);
			if(_boom(y,x)) {
				up_not[y][x]=99;
				open_boom++;
				if(open_boom==n){
					printf("胜利! ");
					Sleep(5000);
					return 0;
				}
			}
			else up_not[y][x]=99;
			system("cls");
		}

	}



	return 0;
}
void add(int y,int x){
	if(num[x+1][y+1]!=66) num[x+1][y+1]++;
	if(num[x+1][y]!=66) num[x+1][y]++;
	if(num[x+1][y-1]!=66) num[x+1][y-1]++;
	if(num[x][y+1]!=66) num[x][y+1]++;
	if(num[x][y-1]!=66) num[x][y-1]++;
	if(num[x-1][y+1]!=66) num[x-1][y+1]++;
	if(num[x-1][y]!=66) num[x-1][y]++;
	if(num[x-1][y-1]!=66) num[x-1][y-1]++;
}
void print_not(int n){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if((up_not[i][j]==1)) printf("%d ",num[i][j]);
			else if(up_not[i][j]==66) printf("B ");
			else if(up_not[i][j]==99) printf("? ");
			else printf("* ");
		}
		printf("\n");
	}
}
int _boom(int _y,int _x){
	if(num[_y][_x]==66) return 1;
	else return 0;
}
void print_true(int n){
	printf("正确的是:\n");
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(num[i][j]==66) printf("%c ",num[i][j]);
			else printf("%d ",num[i][j]);
		}
		printf("\n");
	}
}

2024/6/8 15:24
加载中...