C语言扫雷

// ConsoleApplication31.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <math.h>
#include <time.h>
#define ROW 9
#define COL 9
using namespace std;

void menu();
void show_mine(int mine[][COL], int row, int col);

void Game( int row, int col);
int play(int show[][COL],int bang[][COL],int row, int col);
void Init_bang(int mine[][COL], int row, int col);

void menu()
{
	cout << "********************\n";
	cout << "1.开始游戏\n";
	cout << "2.结束游戏\n";
	cout << "********************\n";

}

void show_mine(int mine[][COL], int row, int col)
{
	for (int i = 0; i < ROW; i++)
	{
		for (int j = 0; j < COL; j++)
			cout << mine[i][j];
		cout << endl;
	}

}

void Init_bang(int mine[][COL], int row, int col)
{
	srand((unsigned)time(NULL));
	int x = rand()%row;
	int y = rand()%col;
	if (mine[x][y] != 9 && mine[x][y] != 3)//0未动 9炸弹 3翻开
		mine[x][y] = 9;
	
}
int play(int show[][COL], int bang[][COL], int row, int col)
{
	if (row >= ROW || col >= COL)
	{
		cout << "输入坐标有误,请重新输入" << endl;
		return 0;
	}

	if (bang[row][col] != 9)
	{
		show[row][col] = 3;
		show_mine(show, ROW, COL);
		return 1;
	}
	
	if (bang[row][col] == 9)
	{
		cout << "扫雷失败";
		return -1;
	}
	
}

void Game(int row, int col)
{
	int show[ROW][COL];
	int bang[ROW][COL];

	for (int i = 0; i < ROW; i++)
		for (int j = 0; j < COL; j++)
			show[i][j] = 4;

	for (int i = 0; i < ROW; i++)
		for (int j = 0; j < COL; j++)
			bang[i][j] = 0;
	show_mine(show,  row, col);
	

	int flag = 1;
	while (1)
	{
		cout << "输入坐标";
		int x, y;
		cin >> x >> y;
		int end;
		end = play(show, bang,x, y);
		if (flag == 1)
		{
			Init_bang(bang,row,col);
			flag = 0;
			show_mine(bang, row, col);
		}
		if (end == -1)
		{
			break;
		}

	}

}

int main()
{
	menu();
	while (1)
	{
		int site;
		cin >> site;

		switch (site)
		{
		case 1:Game(ROW, COL); break;
		case 2:return 0;
		}
	}

}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值