亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述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语言实现简单版扫雷】
推荐阅读
- HDF驱动框架探路(openharmony最新源码,打通应用态到内核态)
- 文本分类(Keras+RNN vs 传统机器学习)
- DNS域名解析服务
- Renix绑定流详解——网络测试仪实操
- #yyds干货盘点#数据分析从零开始实战,PythonPandas与各类数据库
- #yyds干货盘点#three.js中如何切换相机视角
- 技术分享| Sip与WebRTC互通-SRProxy开源库讲解
- Redis持久化RDB和AOF优缺点,你都了解吗()
- 如何在WordPress中调用jquery.min.js文件