Game扫雷游戏

代码链接

扫雷游戏/扫雷游戏 · 阿帆/test.c - 码云 - 开源中国 (gitee.com)

思路

1在地图上布置雷

2排查雷

1)如果是雷,就被炸死

2)如果不是雷,就显示这个坐标周围雷的个数

3我把所有非雷的位置找到,游戏结束。

目标

1建立一个9*9的数组来存放信息

2布置雷,是来放1,如果不是来放0

3文件设计

1)test.c完成对扫雷游戏的测试

2)game.c扫雷游戏函数的实现

3)game.h扫雷游戏函数的声明

设计

1打印一个简单的菜单

void menu()
{
	printf("************************\n");
	printf("****   1. play      ****\n");
	printf("****   0. exit      ****\n");
	printf("************************\n");
}

2初始化棋盘

​
InitBoard(mine, ROWS, COLS, '0');//'0'
InitBoard(show, ROWS, COLS, '*');//'*'

​
void InitBoard(char arr[ROWS][COLS], int rows, int cols, char set)
{
	int i = 0;
	//行
	for (i = 0; i < rows; i++)
	{
		int j = 0;
		for (j = 0; j < cols; j++)
		{
			arr[i][j] = set;
		}
	}
}

3放雷

*因为显示非雷九宫格区域内雷的个数和该区域是否为雷,会产生歧义,希望设置两个数组。一个存放雷的信息,一个存放排查出的雷的信息。

SetMine(mine, ROW, COL);
void SetMine(char arr[ROWS][COLS], int row, int col)
{
	//布置10个雷
	int count = EASY_COUNT;
	while (count)
	{
		//布置雷
		int x = rand()%row+1;//1~9
		int y = rand()%col+1;//1~9

		//布置成功一个雷,count--
		if (arr[x][y] == '0')
		{
			arr[x][y] = '1';
			count--;
		}
	}
}

4排查雷

*注意在mine数组里挖,在show数组里显示

*要判断玩家输入坐标是否在数组范围内

while (win < row * col - EASY_COUNT)
	{
		printf("请输入要排查的坐标:");
		scanf("%d %d", &x, &y);

		if (x >= 1 && x <= row && y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("很遗憾,你被炸死了\n");
				DisplayBoard(mine, ROW, COL);
				break;
			}
			else
			{
				//不是雷,就统计该坐标周围有几个雷
				int n = GetMineCount(mine, x, y);
				show[x][y] = n + '0';
				DisplayBoard(show, ROW, COL);
				win++;
			}
		}
		else
		{
			printf("坐标非法,请重新输入\n");
		}
	}

5游戏成功条件

if (win == row * col - EASY_COUNT)
	{
		printf("恭喜你,排雷成功\n");
		DisplayBoard(mine, ROW, COL);
	}

6游戏难度变化

#define EASY_COUNT 10

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值