C语言实现简单扫雷游戏
本文实例为大家分享了C语言实现简单扫雷游戏的具体代码,供大家参考,具体内容如下
步骤
1.首先打印游戏选择菜单
2.地图及初始化
1)、展示给玩家的地图(show_map)
2)、地雷的图(mine_map可知地雷的位置)
3.打印地图
4.用户输入坐标,并检查坐标的合理性
5.判断当前位置是否有地雷,没有则出现数字(表示周围格子中有几个地雷)
6.打印新的地图
7.重复3~6步骤,直到踩雷游戏结束,或胜利。
8重新继续游戏或退出!
代码
主函数及游戏选择菜单
#include#include #include #defineROW9 #defineCOL9 #defineCOUNT10//地雷个数 intmenu() { printf("*************************\n"); printf("******1.play******\n"); printf("******0.exit******\n"); printf("*************************\n"); printf("请选择:>"); intchoice=0; scanf("%d",&choice); returnchoice; } intmain() { intchoice=0; srand((unsignedint)time(NULL)); while(1) { choice=menu(); if(choice==1) { game(); } elseif(choice==0) { printf("goodbye!\n"); break; } else { printf("输入有误,请重新输入!\n"); } } system("pause"); return0; }
~进入游戏
1.创建两个二维数组;2.对两个二维数组进行初始化;3.打印地图;4.让用户输入一组坐标;5.判定是否踩雷;6.判断游戏是否胜利;7.更新地图,把当前位置变成一个数字(数字为周围格子里地雷个数)
voidgame() { //1.创建两个二维数组 charshow_map[ROW][COL]; charmine_map[ROW][COL]; //2.对两个二维数组进行初始化 Init(show_map,mine_map); intblank_count=0; while(1) { PrintMap(mine_map);//为了方便调试,临时打印mine_map printf("\n"); //3.打印地图 PrintMap(show_map); //4.让用户输入一组坐标 printf("请输入坐标:>"); inti=0; intj=0; scanf("%d%d",&i,&j); if(i<0||i>=ROW||j<0||j>=COL) { printf("输入有误,请重新输入!\n"); continue; } if(show_map[i][j]!='*') { //这个位置已经被翻开 printf("输入的位置已被翻开,请重新输入!\n"); continue; } //5.判定是否踩雷 if(mine_map[i][j]=='1') { //踩雷了,提示游戏结束 PrintMap(mine_map); printf("游戏结束!\n"); break; } blank_count++; //6.游戏是否胜利 if(blank_count==ROW*COL-COUNT) { printf("恭喜你,扫雷成功!\n"); break; } //7.更新地图,把当前位置变成一个数字 UpdateShowMa(show_map,mine_map,i,j); } }
初始化地图
voidInit(charshow_map[ROW][COL],charmine_map[ROW][COL]) { //1.show_map全部初始化为* for(inti=0;i0) { //生成随机坐标 inti=rand()%ROW; intj=rand()%COL; if(mine_map[i][j]=='1') { continue; } mine_map[i][j]='1'; --mine_count; } }
打印地图
voidPrintMap(charmap[ROW][COL]) { //1.先打印第一行(坐标) printf("|"); for(intj=0;j判断落子周围格子地雷的个数
voidUpdateShowMa(charshow_map[ROW][COL],charmine_map[ROW][COL],inti,intj) { //判定当前位置(i,j),周围8个格子有几个雷 intcount=0; if(i-1>=0&&j-1>=0&&mine_map[i-1][j-1]=='1') { count++; } if(i-1>=0&&mine_map[i-1][j]=='1') { count++; } if(i-1>=0&&j+1=0&&mine_map[i][j-1]=='1') { count++; } if(j+1 =0&&mine_map[i+1][j-1]=='1') { count++; } if(i+1 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。