首先头文件跟定义的值
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define sl 10#define ROW 9
#define COL 9
#define ROWs ROW+2
#define COLs COL+2
然后就是主函数部分
int main()
{
int input;
srand((unsigned int)time(NULL));
do
{
menu();
printf("QWQ请做出您的选择QWQ:");
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
printf("退出游戏,去打瓦洛兰特咯\n");
break;
default:
printf("选择错误,请重新选择");
break;
}
}while(input);
return 0;
接着就是menu函数作为游戏公屏
void menu()
{
printf("*********************\n");
printf("*****1.PLAY *****\n");
printf("*****2.EXIT *****\n");
printf("*********************\n");
}
game函数内包含initboard函数display函数setbz函数findbz函数
void game()
{
char bz[ROWs][COLs];//存放布置好的雷
char pc[ROWs][COLs];//存放排查好的雷
//将棋盘初始化
initboard(bz,ROWs,COLs,'0');
initboard(pc,ROWs,COLs,'*');
//打印棋盘
displayboard(pc,ROW,COL);
//布置雷的摆放
setbz(bz,ROW,COL);
//排查雷
findbz(bz,pc,ROW,COL);
}
具体的函数内容(其中有getbzboard函数得到坐标周围雷的个数的函数)
//初始化棋盘函数
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;
for(j=1;j<=col;j++)
{
printf("%c ",board[i][j]);
}
printf("\n");
}
}
//布置雷函数
void setbz(char board[ROWs][COLs],int row,int col)
{
//随机布置十个雷
int count=sl;
while(count)
{
int x=rand()%row+1;//从1-10中随机一个数
int y=rand()%col+1;//同理
if(board[x][y]=='0')
{
board[x][y]='1';
count--;//表示布置好一个雷了
}
}
}
//返回所查询位置周围雷的数量
int getbzcount(char bz[ROWs][COLs],int x,int y)
{
return(bz[x-1][y]+bz[x-1][y-1]+bz[x][y - 1]+bz[x+1][y-1]+bz[x+1][y]+
bz[x+1][y+1]+bz[x][y+1]+bz[x-1][y+1] - 8 * '0');
}
//排查雷函数
void findbz(char bz[ROWs][COLs],char pc[ROWs][COLs],int row,int col)
{
int x=0;
int y=0;
int win=0;
while(win<row*col-sl)//可排查的次数为棋盘的大小-雷数
{
printf("请输入要排查的坐标:");
scanf("%d %d",&x,&y);
if(x>=1&&x<=row&&y>=1&&y<=col)
{
if(bz[x][y]=='1')
{
printf("BOOM,你被炸死了\n");
displayboard(bz,ROW,COL);
break;
}
else
{
//统计该位置周围雷的个数
int count=getbzcount(bz,x,y);
pc[x][y]=count+'0';
displayboard(pc,ROW,COL);
win++;//排查次数-1
}
}
else
{
printf("输入坐标不正确,请重新输入");
}
}
if(win==row*col-sl)
{
printf("恭喜你,成功了,可以买彩票了\n");
displayboard(bz,ROW,COL);
}
}