前言
《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。
本文就借此尝试用C语言中的数组知识,编写一个简易的程序来达到此游戏的效果。
1、思路分析
要实现这个扫雷游戏,我们需要两个数组。
一个用来存放布置好的雷的信息char mine[9][9]
,初始化为‘0’;
另一个用来存放排查出的雷的信息char show[9][9]
,初始化为‘1’。
这里需要三个文件:
game.h —— 存放函数的声明
game.c —— 实现函数完整的定义
test.c —— main函数和函数的调用
2、游戏菜单
在test.c中:
#define _CRT_SEURE_NO_WARNINGS 1
#pragma warning(disable:4996)
#include<stdio.h>
void menu()
{
printf("*********************\n");
printf("***** 1.play *****\n");
printf("***** 0.exit *****\n");
printf("*********************\n");
}
int main()
{
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d",&input);
switch (input)
{
case 1:
printf("扫雷\n");
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
return 0;
}
测试:
3、游戏过程
在game()函数中实现:
3.1初始化和棋盘
test.c
char mine[ROWS][COLS] = {
0 };//存放布置好的雷的信息
char show[ROWS][COLS] = {
0 };//存放排查出的雷的信息
//初始化数组的内容为指定的内容
//mine数组在没有布置雷的时候,都是'0'
InitBoard(mine,ROWS,COLS,'0');
//show数组在没有排查雷的时候,都为'*'
InitBoard(show, ROWS, COLS,'*');
//DisplayBoard(mine,ROW,COL);
DisplayBoard(show, ROW, COL);
game.h
void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);
void DisplayBoard(char board[ROWS][COLS], int row, int col);
game.c
void InitBoard(char board[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++)
{
board[i][j] = set;
}
}
}
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
int i = 0;
int j = 0;
printf("-----扫雷游戏------\n");
for (j = 0;j <=col;j++)
{
printf("%d ", j