做扫雷的游戏

这个游戏是我去年做的,现在给大家看一下。

#include<bits/stdc++.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
double x,y; 
void abc(int y,int x){
	COORD c;
	c.X=x;
	c.Y=y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void shubiao() {	
	POINT a1;HWND h=GetForegroundWindow(); GetCursorPos(&a1); ScreenToClient(h,&a1);
	x=double(a1.y)/16,y=double(a1.x)/16;
	return;
}
bool a[50][50],f[50][50];
int b[50][50],i,j,h,k=225,d[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
void dfs(int c,int g){
	if(c<1||c>15||g<1||g>15)return;
	if(b[c][g]==-1)return;
	if(f[c][g])return;
	f[c][g]=1;
	a[c][g]=1;
	abc(c-1,g*2-2);
	printf(" %c",b[c][g]==0?' ':char(b[c][g]+48));
	if(b[c][g]>0)return;
	for(int o=0;o<8;o++){
		dfs(c+d[o][0],g+d[o][1]);
	}
}
int main()
{
	srand(time(0));
	for(i=1;i<=7;i++)cout<<' ';
	cout<<"扫雷\n";
	system("pause");
	system("cls");
	for(i=1;i<=25;i++){
		int u=rand()%15+1,v=rand()%15+1;
		while(b[u][v]==-1)u=rand()%15+1,v=rand()%15+1;
		b[u][v]=-1;
	}
	for(i=1;i<=15;i++){
		for(j=1;j<=15;j++){
			if(b[i][j]==0)
				for(h=0;h<8;h++)
					if(b[i+d[h][0]][j+d[h][1]]==-1)b[i][j]++;
			cout<<"■";
		}
		cout<<endl;
	}//初始化
	while(k!=25){
		if(KEY_DOWN(MOUSE_MOVED)){
		
			shubiao();
			a[int(x)+1][int(y)+1]=1;
			if(b[int(x)+1][int(y)+1]==-1){
				cout<<">>";
				abc(int(x),int(y)*2);
				cout<<"?";
				Sleep(100);
				abc(int(x),int(y)*2);
				cout<<"!";
				Sleep(100);
				abc(int(x),int(y)*2);
				cout<<"○";
				Sleep(100);
				abc(15,32);
				return 0;
			}//碰到雷
			else{
				memset(f,0,sizeof(f));
				dfs(int(x)+1,int(y)+1);
			}
		}
		k=0;
		for(i=1;i<=15;i++)
			for(j=1;j<=15;j++)
				if(!a[i][j])k++;
		abc(15,32);
	}
	abc(0,0);
	for(i=1;i<=15;i++){
		for(j=1;j<=15;j++){
			if(b[i][j]==-1)cout<<"Y";
			else cout<<' ';
		}
		Sleep(50);
		cout<<endl;
	}
	cout<<"成功!";
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 MATLAB 扫雷游戏的步骤: 1. 创建一个空白的图形窗口。你可以使用 MATLAB 的 "figure" 函数来创建一个新的图形窗口。 2. 创建一个矩阵来表示扫雷棋盘。你可以使用 MATLAB 的 "zeros" 函数创建一个矩阵,然后将某些元素设置为 "1" 来表示雷的位置。 3. 在棋盘上随机放置一些雷。你可以使用 MATLAB 的 "randperm" 函数来随机选择一些位置,并将这些位置设置为 "1"。 4. 计算每个格子周围的雷的数量。你可以使用 MATLAB 的 "conv2" 函数来计算每个格子周围的 8 个格子中有多少个雷,然后将这个数量保存在相应的格子中。 5. 循环显示棋盘,并等待用户点击一个格子。你可以使用 MATLAB 的 "while" 循环来不断地显示棋盘,并等待用户输入。每当用户点击一个格子时,你需要检查这个格子是否是雷,如果是,游戏结束;如果不是,你需要显示这个格子周围的雷的数量,并标记这个格子已经被点击过。 6. 如果用户点击的格子周围没有雷,你需要递归地显示周围的格子。你可以使用 MATLAB 的 "find" 函数来搜索周围的格子,并递归地显示这些格子。 7. 当用户点击所有非雷的格子时,游戏胜利。你可以使用一个计数器来记录用户点击的非雷格子的数量,当这个计数器等于总格子数减去雷的数量时,游戏胜利。 这些是实现 MATLAB 扫雷游戏的一些基本步骤,你可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值