c语言第七弹--扫雷小游戏!

今天做一个有趣的扫雷小游戏 现在正式开始设计。

思路:想要根本上实现必须拥有 实现函数的主体.c文件 头文件.h 及头文件实现.c。

头文件.h

#pragma once
#include 
#include 
#include 
#define EASY_COUNT 10
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
	//初始化棋盘
	void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
	//打印棋盘
	void DisplayBoard(char board[ROWS][COLS], int row, int col);
	//布置雷
	void SetMine(char board[ROWS][COLS], int row, int col);
	//排查雷
	void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);

头文件的实现

#include "game.h"

void InitBoard(char board[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++)
 			{
				board[i][j] = set;
 			}
 	}
}
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
	 int i = 0;
	 printf("--------扫雷游戏-------\n");
	 for (i = 0; i <= col; i++)
	 {
 		printf("%d ", i);
	 }
		 printf("\n");
	 for (i = 1; i <= row; i++)
	 {
 		printf("%d ", i);
		 int j = 0;
	 for (j = 1; j <= col; j++)
	 {
		 printf("%c ", board[i][j]);
 	}
		 printf("\n");
 }
}
void SetMine(char board[ROWS][COLS], int row, int col)
{
 //布置10个雷
 //⽣成随机的坐标,布置雷
 	int count = EASY_COUNT;
	 while (count)
 	{
 		int x = rand() % row + 1;
 		int y = rand() % col + 1;
 		if (board[x][y] == '0')
		 {
			 board[x][y] = '1';
			 count--;
 		}
	 }
}
int GetMineCount(char mine[ROWS][COLS], int x, int y)
{
		 return (mine[x-1][y]
		 +mine[x-1][y-1]
		 +mine[x][y - 1]
		 +mine[x+1][y-1]
		 +mine[x+1][y+1]
		 +mine[x][y+1]
		 +mine[x-1][y+1] - 8 * '0');
}
void FindMine(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");
				 DisplayBoard(mine, ROW, COL);
				 break;
			 }
			 else
	 		{
 			//该位置不是雷,就统计这个坐标周围有⼏个雷
	 	int count = GetMineCount(mine, x, y);
	 	show[x][y] = count + '0';
	 	DisplayBoard(show, ROW, COL);
		 win++;
	 		}
	 }
	 else
	{
		 printf("坐标⾮法,重新输⼊\n");
 	}
 }
	 if (win == row * col - EASY_COUNT)
	 {
	 printf("恭喜你,排雷成功\n");
	 DisplayBoard(mine, ROW, COL);
	 }
}

test.c

#include "game.h"
void menu()
{
 	 printf("***********************\n");
 	 printf("***** 1. play *****\n");
	 printf("***** 0. exit *****\n");
	 printf("***********************\n");
}
void game()
{
 	char mine[ROWS][COLS];//存放布置好的雷
 	char show[ROWS][COLS];//存放排查出的雷的信息
 	//初始化棋盘
 	//1. mine数组最开始是全'0'
 	//2. show数组最开始是全'*'
 	InitBoard(mine, ROWS, COLS, '0');
 	InitBoard(show, ROWS, COLS, '*');
 	//打印棋盘
 	//DisplayBoard(mine, ROW, COL);
 	DisplayBoard(show, ROW, COL);
 	//1. 布置雷
 	SetMine(mine, ROW, COL);
 	//DisplayBoard(mine, ROW, COL);
 	//2. 排查雷
 	FindMine(mine, show, ROW, COL);
}
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;
}

仅供参考!!

你可能感兴趣的:(c语言,开发语言)