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语言怎么实现简易的扫雷游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~