C语言游戏——扫雷


一、扫雷游戏设计详细思路

1.游戏菜单设计

  运行游戏程序的时候,打印出一个游戏菜单,提示玩家是选择游戏还是退出游戏程序。可以写一个菜单函数,函数里调用printf函数打印菜单信息。详细代码入下:

void menu(void)
{
   
	printf("********************\n");
	printf("*******1.PLAY*******\n");
	printf("*******0.EXIT*******\n");
	printf("********************\n");
}

运行效果如下:
在这里插入图片描述
  接下来就要用scanf函数接收玩家的输入input,玩家输入1时,程序执行玩游戏程序;用户输入0时,程序执行退出游戏;如果玩家输入不是1也不是0,用printf函数提示玩家输入错误,请重新输入,这里可以用switch语句判断玩家的输入input。如果玩家玩了一局不过瘾,还要玩,程序再次打印菜单供玩家选择。程序至少运行一次,综上这里可以用一个do…while…来实现,while的判断可以使用玩家的输入input,当input为0时就退出整个程序。代码如下:


int main()
{
   
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
   
		menu();//菜单
		printf("请输入>:");
		scanf("%d", &input);
		safe_flush(stdin);//清除scanf缓存区
		switch (input)
		{
   
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}

	} while (input);

	return 0;
}

2.game程序设计

  当玩家选择1时,我们就进入道路玩游戏程序game函数。在开始游戏之前,我们需要一个雷盘,雷盘可以用来设置地雷,但是不能让玩家看见地雷的位置,所以我们还要一个给玩家看的棋盘。这里我们创建两个二维数组,一个mine[ROWS][COLS],一个show[ROWS][COLS],ROWS和COLS使用宏定义,定义棋盘的大小,方便我们修改棋盘的大小。代码如下:

#define ROW  9
#define COL  9
#define ROWS ROW+2
#define COLS COL+2
char mine[ROWS][COLS] = {
    0 };
char show[ROWS][COLS] = {
    0 };

  ROWS为什么为ROW+2(COLS同理);其实很好理解,当玩家输入坐标时,我们需要计算坐标周围的地雷个数,如果有几个就在该坐标显示对应的数字,如果没有就显示字符空格,不过当坐标为棋盘边界时,计算坐标周围的地雷个数就会存在数组越界的情况,所以就在原数组的行、列上增加两行两列,这样即使越界了,读到的值也是雷盘的初始化值。

2.1棋盘的初始化

  当创建好棋盘后,我们希望用字符‘0’表示没有雷,用字符‘1’表示有雷,在显示时,玩家看到的应该为字符’*'组成的棋盘(表示未知)。代码如下:

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
   
	int i = 0;
	int j = 0;
	for (i = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值