C语言实现扫雷游戏
本文将介绍如何用C语言多文件编程实现扫雷
该示例扫雷程序可实现以下几个功能:
- 自定义雷数
- 踩雷后会将所有雷显示出来
- 地图大小易修改
Mine_clearance.h
#pragmaonce #define_CRT_SECURE_NO_WARNINGS #include#include #include #defineROW11 #defineCOL11 #define踩雷0 #define玩家胜利1 intg_number_mine=(ROW-1)*(COL-1);//雷的数量上限 charmap[ROW][COL];//玩家看到的地图 charmine_map[ROW+2][COL+2];//雷阵 voidInit_map();//初始化玩家看到的地图 voidInit_mine_map(intinput_count);//初始化雷阵 voidPrint_map();//打印地图 voidPrint_mine_map();//如果踩雷需要把雷阵打印出来 voidPlayer_move(introw,intcol);//提示玩家输入坐标开始游戏1.合法性校验(是否越界)2.是否重复输入,(已经输入过的) intJudge_mine_end(introw,intcol);//判断是否踩雷 charCount_number_mine(introw,intcol);//统计周围八个方块雷的个数 voidPrint_mine_number(introw,intcol,intn);//将周围八个方块雷的数量显示在当前方块上 intJudge_win(intinput_count);//判断是否获胜
Mine_clearance.c
#include"Mine_clearance.h" //初始化玩家看到的地图 voidInit_map() { for(introw=0;row<=ROW;++row) { for(intcol=0;col<=COL;++col) { map[row][col]=''; } } } //初始化雷阵 voidInit_mine_map(intinput_count) { for(introw=0;row=ROW||col<1||col>=COL) { printf("非法输入!请重新输入\n"); }elseif(map[row][col]=='o') { printf("重复输入无效,请重新输入!\n"); }else { map[row][col]='o'; } } //判断是否踩雷 intJudge_mine_end(introw,intcol) { if(map[row][col]=='o'&&mine_map[row][col]=='x') { return踩雷; } return1; } //统计周围八个方块雷的个数 charCount_number_mine(introw,intcol) { intn=0; for(inti=-1;i<2;++i) { for(intj=-1;j<2;++j) { if(mine_map[row+i][col+j]=='x') { n+=1; } } } returnn; } //将周围八个方块雷的数量显示在当前方块上 voidPrint_mine_number(introw,intcol,intn) { charnum_mine[]={'0','1','2','3','4','5','6','7','8'}; switch(n){ case0: map[row][col]=num_mine[0]; break; case1: map[row][col]=num_mine[1]; break; case2: map[row][col]=num_mine[2]; break; case3: map[row][col]=num_mine[3]; break; case4: map[row][col]=num_mine[4]; break; case5: map[row][col]=num_mine[5]; break; case6: map[row][col]=num_mine[6]; break; case7: map[row][col]=num_mine[7]; break; case8: map[row][col]=num_mine[8]; break; default: printf("雷数非法\n"); break; } } intJudge_win(intinput_count) { intnum_mine=0; for(introw=1;row
|
main.c
#include"Mine_clearance.h" intmain() { while(1) { intinput_count=0; intcount_mine=0; introw=0; intcol=0; printf("自定义雷的个数:\n"); scanf("%d",&input_count); if(input_count<1||input_count>=g_number_mine) { printf("非法输入,请重新输入!\n"); }else { Init_mine_map(input_count); Init_map(); Print_map(); while(1) { printf("请输入坐标:(中间用空格隔开)\n"); scanf("%d%d",&row,&col); Player_move(row,col); if(Judge_mine_end(row,col)==踩雷) { printf("踩雷了,游戏结束\n"); Print_mine_map(); break; }else { count_mine=Count_number_mine(row,col); Print_mine_number(row,col,count_mine); Print_map(); if(Judge_win(input_count)==玩家胜利) { printf("你赢了!\n"); break; } } } } } system("pause"); return0; }显示效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。