C语言怎么实现简易的扫雷游戏

这篇文章主要介绍C语言怎么实现简易的扫雷游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

本文实例为大家分享了C语言扫雷游戏的具体代码,供大家参考,具体内容如下

C语言怎么实现简易的扫雷游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineMAX_ROW9
#defineMAX_COL9
#defineMINE_C0UNT10
voidmenu(){
printf("************************\n");
printf("*****1.play****\n");
printf("*****0.exit****\n");
printf("************************\n");
}
//1、先初始化两个地图,玩家看到的,地雷布局图。
voidInit(charshow_map[MAX_ROW][MAX_COL],charmine_map[MAX_ROW][MAX_COL]){
//对于玩家看到的地图,未翻到的都设为*;
for(introw=0;row<MAX_ROW;row++){
for(intcol=0;col<MAX_COL;col++){
show_map[row][col]='*';
}
}
//对于地雷布局图,用0表示没有地雷,用1表示雷。
for(introw=0;row<MAX_ROW;row++){
for(intcol=0;col<MAX_COL;col++){
mine_map[row][col]='0';
}
}
//假设设置十个地雷
intn=MINE_C0UNT;
while(n>0){
introw=rand()%MAX_ROW;
intcol=rand()%MAX_COL;
if(mine_map=='1'){
continue;
}
mine_map[row][col]='1';
--n;
}
}
voidprintmap(charmap[MAX_ROW][MAX_COL]){
//不光能打印出地图,还能带坐标
//先打印第一行
printf("");
for(inti=0;i<MAX_COL;i++){
printf("%d",i);
}
printf("\n");
//打印一个分割线
for(intcol=0;col<MAX_COL-2;++col){
printf("---");
}
printf("\n");
//在打印其他行
for(introw=0;row<MAX_ROW;row++){
printf("%d|",row);
//打印本行的每一列
for(intcol=0;col<MAX_COL;col++){
printf("%c",map[row][col]);
}
printf("\n");
}
}
voidupdateshowmap(introw,intcol,charshow_map[MAX_ROW][MAX_COL],charmine_map[MAX_ROW][MAX_COL]){
intcount=0;
if(row-1>=0&&col-1>=0&&row-1<MAX_ROW&&col-1<MAX_COL&&mine_map[row-1][col-1]=='1'){
count++;
}
if(row-1>=0&&col>=0&&row-1<MAX_ROW&&col<MAX_COL&&mine_map[row-1][col]=='1'){
count++;
}
if(row-1>=0&&col+1>=0&&row-1<MAX_ROW&&col+1<MAX_COL&&mine_map[row-1][col+1]=='1'){
count++;
}
if(row>=0&&col-1>=0&&row<MAX_ROW&&col-1<MAX_COL&&mine_map[row][col-1]=='1'){
count++;
}
if(row>=0&&col+1>=0&&row<MAX_ROW&&col+1<MAX_COL&&mine_map[row][col+1]=='1'){
count++;
}
if(row+1>=0&&col-1>=0&&row+1<MAX_ROW&&col-1<MAX_COL&&mine_map[row+1][col-1]=='1'){
count++;
}
if(row+1>=0&&col+1>=0&&row+1<MAX_ROW&&col+1<MAX_COL&&mine_map[row+1][col+1]=='1'){
count++;
}
show_map[row][col]='0'+count;
}
voidgame(){
charshow_map[MAX_ROW][MAX_COL];
charmine_map[MAX_ROW][MAX_COL];
Init(show_map,mine_map);
while(1){
printmap(show_map);
printf("请玩家输入一组坐标:");
introw,col;
intblank_count_already_show=0;
scanf("%d%d",&row,&col);
system("cls");
if(row<0||row>=MAX_ROW||col<0||col>=MAX_COL){
printf("您的输入不合法,请您重新输入!\n");
continue;
}
if(show_map[row][col]!='*'){
printf("您输入的位置已经被占用了,请您重新输入!\n");
continue;
}
//判断玩家输入的坐标对应的是不是地雷,如果是地雷则游戏就结束了
if(mine_map[row][col]=='1'){
printf("游戏结束!\n");
printmap(mine_map);
break;
}
//判断游戏是否胜利,通过计算已翻开的非雷的格子的个数
++blank_count_already_show;
if(blank_count_already_show==MAX_ROW*MAX_COL-MINE_C0UNT){
printf("游戏胜利!\n");
printmap(mine_map);
break;
}
//统计当前位置中周围雷的个数
updateshowmap(row,col,show_map,mine_map);
}
}
intmain(){
srand((unsigned)time(0));
intinput=0;
while(1){
menu();
printf("请选择:");
scanf("%d",&input);
if(input==1){
printf("开始游戏!\n");
game();
}
elseif(input==0){
printf("退出游戏!\n");
break;
}
else{
printf("输入错误,请重新输入!\n");
continue;
}
}
system("pause");
return0;
}

以上是“C语言怎么实现简易的扫雷游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-06-13 23:19:48
收藏
分享
海报
0 条评论
165
上一篇:c语言程序中调试方法有哪些 下一篇:Java中ThreadLocal的作用是什么
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码