C生万物之扫雷

//game.c
#define _CRT_SECURE_NO_EARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include"_23_5_15_1_game.h"
void InitBoard(char board[ROWS][COLS], int rows, int cols, char a)
{
	int i, j;
	for (i = 0; i <rows ; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = a;
		}
	}
}
void print(char board[ROWS][COLS], int row, int col)
{
	int i, j;
	printf("------扫雷游戏------\n");
	for (i = 0; i <= row; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);
		}
		printf("\n");
	}
}
void Setmain(char board[ROWS][COLS], int row, int col)
{
	int n = 1,i,p,q;
	for (i = 0; i < n; i++)
	{
		scanf("%d %d", &p, &q);
		if (board[p][q] == '0')
			board[p][q] = '1';
		else
		{
			printf("此处已有雷\n");
			i--;
		}
	}
}
int FindMine(char board[ROWS][COLS],char arr[ROWS][COLS], int row, int col)
{
	int p, q, k = 0, w = 1;;
	do
	{
		printf("输入坐标\n");
		scanf("%d %d", &p, &q);
		if (board[p][q] == '0')
		{
			arr[p][q] = '0';
			k++;
			print(arr, ROW, COL);
		}
		if (board[p][q] == '1')
		{
			printf("踩雷了\n");
			return w;
		}
	} while (k <= ROW * COL - 10);
	printf("成功\n");
	return w;
}
//game.h
#pragma once
#include<stdio.h>
#define ROW 10
#define COL 10
#define ROWS ROW+1
#define COLS COL+1
void InitBoard(char* mine[ROWS][COLS], int rows, int cols, char a);
void print(char* mine[ROWS][COLS], int rows, int cols);
void Setmain(char board[ROWS][COLS], int row, int col);
int FindMine(char board[ROWS][COLS],char arr[ROWS][COLS], int row, int col);
//test.c
#define _CRT_SECURE_NO_EARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include"_23_5_15_1_game.h"
void meau()
{
	printf("*****************************\n");
	printf("********   1 . play   *******\n");
	printf("********   0 . exit   *******\n");
	printf("*****************************\n");
}
void game()
{
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
	InitBoard(mine, ROWS, COLS, '0');
	InitBoard(show, ROWS, COLS, '#');
	print(mine, ROW, COL);
	print(show, ROW, COL);
	Setmain(mine, ROW, COL);
	print(mine, ROW, COL);
	FindMine(mine,show, ROW, COL);
	
}
int main()
{
	int n;
	
	do
	{
		meau();
		scanf("%d", &n);
		if (n == 1)
			game();
		else if (n == 0)
			printf("退出游戏\n");
		else
			printf("重新选择\n");
	} while (n);
	return 0;
}

昨天写了一个三子棋的代码,今天分享一下扫雷,扫雷我们要知道,我们要有一个存放是否有雷的二维数组,和一个给用户观看的二维数组,首先对其初始化,然后布雷。排雷时,若无雷,则将此处位置改变,若有雷则失败。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是懒大王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值