介绍
使用C语言编写一个简单对扫雷小游戏吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>扫雷的思路强>
游戏。h
的ifndef _GAME_H_ #定义_GAME_H_ # include# include & lt; time.h> # include # include # pragma警告(禁用:4996) #定义行12 #定义坳12//定义20个雷 #定义num 20 无效的菜单(); 空游戏(); # endif
主要。c
# include“game.h" int main () { int辞职=0; int选择=0; 而(辞职){ 菜单(); scanf (“% d",和选择); 开关(select) { 案例1: 游戏(); 打破; 案例2: 辞职=1; 打破; 默认值: printf(“请重新输入“); 打破; } } 系统(“pause"); 返回0; }
游戏。c
# include“game.h" 无效的菜单() { printf (“# # # # # # # # # # # # # # # # # # # # # # # # # # \ n"); printf (“# # 1。玩2。退出# # \ n"); printf (“# # # # # # # # # # # # # # # # # # # # # # # # # # \ n"); printf(“请输入#“); }//设置20个随机雷 空白SetMines (char mine_board [] (COL), int, int)上校 { int数=num; 而(count) { int x=rand () % 10 + 1; int y=rand () % 10 + 1; 如果(mine_board [x] [y]==& # 39; 0 & # 39;) { mine_board [x] [y]=& # 39; 1 & # 39;; 数, } } }//判断周围有几个雷 我int GetMines (char [] (COL), int, int坳,int x, int y) { 返回我的[x - 1] [y - 1) +我的[x - 1]我[y] + [x - 1] [y + 1] + \ 我[x] [y - 1] +我我[x] [y + 1] + [x + 1] [y - 1] + \ 我我[x + 1] [y] + [x + 1] [y + 1] - 8 * & # 39; 0 & # 39;; }//设置界面的下划的线 静态孔隙ShowLine (int num) { printf(“——产生绯闻); for (int i=0;我& lt;num;我+ +){ printf(“产生绯闻); } printf (“\ n"); }//一个显示界面,传入界面数组显示扫雷界面,传入布雷数组显示雷区界面 空白ShowBoard (char show_board [] (COL), int, int)上校 { printf (““); for (int i=1;我& lt;行- 1;我+ +){ printf (“% d“,我); } printf (“\ n"); ShowLine(2 *坳+坳+ 4); for (int i=1;我& lt;行- 1;我+ +){ printf (“% 2 d |“我); for (int j=1;j & lt;col - 1;j + +) { printf (“% c |“show_board[我][j]); } printf (“\ n"); ShowLine(2 *坳+坳+ 4); } } 空游戏() { char show_board(行)(COL); char mine_board(行)(COL); memset (show_board, & # 39; * & # 39;, sizeof (show_board)); memset (mine_board & # 39; 0 & # 39;, sizeof (mine_board)); 将srand((无符号长)时间(NULL)); SetMines (mine_board、行坳); int数=(行- 2)* (COL - 2) - num; int x=0; int y=0; {做 ShowBoard (show_board、行坳); printf(“请输入位置#“); scanf (“% d % d", x,, y); 如果(x & lt;1 | | x比;10 | | y & lt;1 | | y祝辞;10){ printf(“输入越界,请重新输入! \ n"); 继续; } 如果(show_board [x] [y] !=& # 39; * & # 39;) { printf(“该位置已经被排除,请重新输入! \ n"); 继续; } 如果(mine_board [x] [y]==& # 39; 1 & # 39;) { 打破; } int num=GetMines (mine_board、行坳,x, y); show_board [x] [y]=num + & # 39; 0 & # 39;; 数, 系统(“cls"); },(数比;0);//count> 0说明坐标是雷,打破提前退出了 如果(计数比;0){ printf(“你被炸死了! \ n"); } 其他{ printf(“你赢了! \ n"); } printf(“下面是雷区的排布! \ n"); ShowBoard (mine_board、行坳); }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。