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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。