c语言实现简单扫雷小游戏

c语言实现简单扫雷小游戏,第1张

c语言实现简单扫雷小游戏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言一、基本思路二、使用步骤

1.主函数部分2.数组 *** 作部分总结


前言

一个简单的小游戏


提示:以下是本篇文章正文内容,下面案例可供参考

一、基本思路

需要两个相同大小的棋盘(我的代码中分别命名为mine和show),用mine来实现对雷的 *** 作,把show数组打印在屏幕上,需要把玩家对show数组的处理变成对mine数组的处理

二、函数实现功能 1.主函数用一个简易的菜单来选择开始或退出游戏

void menu()

void game()//运行机制

代码如下(示例):

int main()
{
    int input = 0;
    srand((unsigned int)time(NULL));
    do
    {
        menu();
        printf("请输入:>");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
            break;
        case 0:
            printf("退出游戏n");
            break;
        default:
            printf("选择错误,重新选择!n");
            break;
        }
    } while (input);

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

void game()
{
    //扫雷游戏的实现
    //mine数组是用来存放布置好的雷的信息
    char mine[ROWS][COLS] = { 0 };//'0'
    //show数组是用来存放排查出的雷的信息
    char show[ROWS][COLS] = { 0 };//'*'

    //初始化棋盘
    init_board(mine, ROWS, COLS, '0');
    init_board(show, ROWS, COLS, '*');
    //打印棋盘
    //show_board(mine, ROW, COL);
    //布置雷
    set_mine(mine, ROW, COL);
    show_board(show, ROW, COL);
    //排查雷
    find_mine(mine, show, ROW, COL);
}


2.对数组的 *** 作

初始化

 

void init_board(char arr[ROWS][COLS], int rows, int cols, char set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			arr[i][j] = set;
		}
	}
}
布置雷
void show_board(char arr[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	printf("------------扫雷------------n");
	for (i = 0; i <= col; i++)
	{
		printf("%d ", i);
	}
	printf("n");

	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", arr[i][j]);
		}
		printf("n");
	}
	printf("------------扫雷------------n");

}

//布置雷

void set_mine(char mine[ROWS][COLS], int row, int col)
{
	int count = EASY_COUNT;
	int x = 0;
	int y = 0;
	while (count)
	{
		x = rand() % row + 1;
		y = rand() % col + 1;
		if (mine[x][y] == '0')
		{
			mine[x][y] = '1';//布置雷
			count--;
		}
	}
}
排查雷
void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0;
	int win = 0;
	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");
				show_board(mine, ROW, COL);
				break;
			}
			else
			{	
				if (mine[x][y] == '0') 
				{
					get(mine,x,y);
				}
				int count = get_mine_count(mine, x, y);
				show[x][y] = count + '0';
				show_board(show, ROW, COL);
				win++;
			}
		}
		else
		{
			printf("坐标非法,重新输入n");
		}
	}
	if (win == row * col - EASY_COUNT)
	{
		printf("恭喜你,排雷成功n");
		show_board(mine, ROW, COL);
	}
}
总结

感谢阅读,如有错误请批评指正
 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5714495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存