c语言实现简单版扫雷

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述c语言实现简单版扫雷相关的知识,希望能为你提供帮助。
game.h//声明
#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 9                   
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define set_count 10
#include< stdio.h>
#include< stdlib.h>
#include< time.h>
void Initboard(char mine[ROWS][COLS],int rows,int cols,char set); //初始化
void Displayboard(char mine[ROWS][COLS],int row,int col); //打印棋盘
void setboard(char mine[ROWS][COLS],int row,int col); //布置雷
void playmineboard(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col); //扫雷
game.c//游戏实现
#include"game.h"
初始化棋盘

void Initboard(char mine[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++)
{
mine[i][j]=set;
}
}
}

打印棋盘
void Displayboard(char mine[ROWS][COLS],int row,int col)
{
int i=0;
int j=0;
for(i=0; i< =col; i++)
{
printf("%d ",i);
}
printf("\\n");
for(i=1; i< =row; i++)
{
printf("%d ",i);
for(j=1; j< =col; j++)
{
printf("%c ",mine[i][j]);
}
printf("\\n");
}
}

布置雷
void setboard(char mine[ROWS][COLS],int row,int col)
{
int x=0;
int y=0;
int count=set_count;
while(count)
{
x=rand()%row+1;
y=rand()%col+1;
if(mine[x][y]==0)
{
{
mine[x][y]=1;
count--;
}
}
}
}

判断坐标周围雷的数量
int set_mine_count(char mine[ROWS][COLS],int x,int y)
{
return mine[x][y-1]+
mine[x-1][y-1]+
mine[x-1][y]+
mine[x+1][y-1]+
mine[x+1][y]+
mine[x+1][y+1]+
mine[x][y+1]+
mine[x-1][y+1]-8*0;
}

玩扫雷
void playmineboard(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{
int rmp=row*col-set_count;
int x=0;
int y=0;
int count=0;
while(1)
{
printf("请输入坐标> :");
scanf("%d%d",& x,& y);
if(x> 0& & x< =row& & y> 0& & y< =col)
{
if(mine[x][y]==0)
{


int count=set_mine_count(mine,x,y);
show[x][y]=count+0;


Displayboard(show,ROW,COL);
}
else
{
printf("很不幸,你被炸死了\\n");
Displayboard(mine,ROW,COL);
break;
}
}
else
{
printf("输入坐标非法,请重新输入\\n");
}
if(count==rmp)
{
printf("恭喜你,扫雷成功\\n");
break;
}
}
}

test.c//主程序
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
具体实现步骤
void game()
{
char mine[ROWS][COLS]={0}; //创建数组
char show[ROWS][COLS]={0};
Initboard(mine,ROWS,COLS,0); //初始化棋盘
Initboard(show,ROWS,COLS,*);
//Displayboard(mine,ROW,COL); //打印棋盘
Displayboard(show,ROW,COL);
setboard(mine,ROW,COL); //布置雷
//Displayboard(mine,ROW,COL);
playmineboard(mine,show,ROW,COL); //扫雷
}

创建一个菜单
void menu()
{
printf("*********************************************\\n");
printf("***********1.play***************\\n");
printf("***********0.exlt***************\\n");
printf("*********************************************\\n");
}

主程序
void test()
{
int input=0;
do
{
menu();
printf("请输入\\n");
scanf("%d",& input);
switch(input)
{
case 1:
{
game();
break;
}
case 0:
{
printf("退出游戏\\n");
break;
}
default :
{
printf("输入数字不合法,请重新输入\\n");
break;
}
}
}while(input);
}

【c语言实现简单版扫雷】


    推荐阅读