目录
2:function.c源文件------具体实现game.c文件中的语句代码,如此处的自定义函数GameStart() 等。
game.c------头文件的包含,符号的定义和函数的声明
1:game.c源文件------游戏的简单框架
#include"game.h"
//主函数入口
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
//菜单
Menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
//开始游戏,进入GameStart()函数
GameStart();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择!\n");
}
} while (input);
return 0;
}
2:function.c源文件------具体实现game.c文件中的语句代码,如此处的自定义函数GameStart()等。
下面为进入游戏后的代码执行逻辑
game.c------头文件的包含,符号的定义和函数的声明
#pragma once
#define _CRT_SECURE_NO_WARNINGS
//面板布局
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
//雷的数量
#define Mine 10
//头文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//选择菜单
void Menu(void);
//开始游戏,进入GameStart()函数
void GameStart(void);
// {
//面板初始化
void InitBoard(char mineboard[ROWS][COLS], int rows, int cols, char tmp);
//埋雷
void SetMine(char mineboard[ROWS][COLS]);
//输出展示
void DisplayBoard(char show[ROWS][COLS], int row, int col);
//找雷
void FindMine(char mineboard[ROWS][COLS], char showboard[ROWS][COLS]);
// }
逐一实现上述函数
#include"game.h"
//菜单
void Menu(void)
{
printf("-----------------------\n");
printf("--------1:Play---------\n");
printf("--------0:Exit---------\n");
printf("-----------------------\n");
}
//面板初始化
void InitBoard(char mineboard[ROWS][COLS], int rows, int cols, char tmp)
{
int i = 0;
int j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
mineboard[i][j] = tmp;
}
}
}
//埋雷
void SetMine(char mineboard[ROWS][COLS])
{
int count = Mine;
while (count)
{
//'1'表示有雷,'0'表示无雷
int x = rand() % ROW + 1;
int y = rand() % COL + 1;
if (mineboard[x][y] == '0')
{
mineboard[x][y] = '1';
count--;
}
}
}
//输出展示
void DisplayBoard(char show[ROWS][COLS], int row, int col)
{
system("cls");
int i = 0;
int j = 0;
printf("--------扫雷-------\n");
for (j = 0; j <= col; j++)
{
printf("%d ", j);
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", show[i][j]);
}
printf("\n");
}
printf("-------------------\n");
}
//找雷
void FindMine(char mineboard[ROWS][COLS], char showboard[ROWS][COLS])
{
int x = 0;
int y = 0;
int count = ROW * COL - Mine;
while (count)
{
printf("请输入你要排查的坐标:>");
scanf("%d %d", &x, &y);
if (x >= 1 && x <= ROW && y >= 1 && y <= COL)
{
if (showboard[x][y] != '*')
{
printf("此处已排查,请重新输入!\n");
}
else
{
if (mineboard[x][y] == '1')
{
DisplayBoard(mineboard, ROW, COL);
printf("真不幸,你踩到雷了!\n");
system("pause");
system("cls");
return;
}
else
{
showboard[x][y] = (mineboard[x - 1][y - 1] + mineboard[x][y - 1] + mineboard[x + 1][y - 1]
+ mineboard[x - 1][y] + mineboard[x + 1][y] + mineboard[x - 1][y + 1]
+ mineboard[x][y + 1] + mineboard[x + 1][y + 1] - 8 * '0') + '0';
DisplayBoard(showboard, ROW, COL);
count--;
}
}
}
else
{
printf("错误输入,请重新输入!\n");
}
}
DisplayBoard(mineboard, ROW, COL);
printf("恭喜你,已经成功排除了所有雷!\n");
system("pause");
system('cls');
}
void GameStart(void)
{
//创建面板
char MineBoard[ROWS][COLS];//后台操作
char ShowBoard[ROWS][COLS];//输出展示
//面板初始化
InitBoard(MineBoard, ROWS, COLS, '0');
InitBoard(ShowBoard, ROWS, COLS, '*');
//埋雷
SetMine(MineBoard);
//输出展示
//DisplayBoard(MineBoard, ROW, COL);
DisplayBoard(ShowBoard, ROW, COL);
//开始找雷
FindMine(MineBoard, ShowBoard);
}
3:最后来看一看代码运行效果
如果我的分享对你有帮助,那就是对我最大鼓励!