当前位置:   article > 正文

扫雷c++_c++扫雷代码

c++扫雷代码

今天简单介绍一下扫雷代码

1,设计一个9*9棋盘的扫雷游戏

2,实现switch case语句 来实行游戏的开始结束

3,游戏部分创建两个二维数组,分别是mine和show数组mine数组是有关炸弹的数组,有炸弹的位置是1,没有炸弹的位置是0;show数组是查找炸弹的数组,不知道的位置是‘*’,查出来的位置的数字是周围的炸弹个数 

4,main初始化是‘0’ show 初始化是‘*’

5,打印棋盘 每当输出坐标数 就要打印一次棋盘

6,当输入坐标数时,电脑也有输入我们就用到 rand(引用头文件:stdlib.h)和time(引用头文件:time.h),结合使用可以使电脑随机布置雷

7,实现排查雷的操作玩家输入一个坐标,若踩雷则会提醒游戏结束;若未踩雷,则在show数组中的相应位置中显示周围一圈雷的个数

接下来就是代码实现的步骤

创建一个game.h的头文件

使在ff.cpp和game.cpp中引入“#include game.h”

 创建函数、简单的游戏选择 函数

在ff.cpp中main函数do while 语句以及switch case语句

menu();中间打错了

 

设计一个9*9((横坐标ROW纵坐标COL))的棋盘

但是如果在边框会出现溢出的现象于是我们设计一个11*11的棋盘(横坐标ROWS 纵坐标COLS但是显示9*9出来所以设计两个宏定义 以及 雷的数量这里就先设计10个

接下来就是所有函数的过程

 初始化棋盘首先 set=0 将二维数组初始化0;

 

 打印棋盘 是11*11的棋盘在考虑溢出只遍历9*9 就可以解决溢出 

随机函数   Setmine()设置的雷的数量x,y代表横纵坐标

将处在处在3*3的雷的排查出来算出周围雷的个数

  1. void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
  2. {
  3. int x=0;
  4. int y=0;
  5. int win=0;
  6. while(win<row*col-EASY_COUNT)
  7. {cout<<"请输入要排查的目标";
  8. cin>>x>>y;
  9. if(x>=1&&x<=row&&y>=1&&y<=col)
  10. {
  11. if(mine[x][y]=='1')
  12. {cout<<"很遗憾,你被炸死了"<<endl;
  13. DisplayBoard(mine,ROW,COL);
  14. break;
  15. }
  16. else {
  17. int count = GetMineCount(mine, x, y);
  18. show[x][y] == count + '0';
  19. DisplayBoard(show, ROW, COL);
  20. win++;
  21. }
  22. }
  23. else
  24. {cout<<"坐标非法,重新输入"<<endl;}
  25. }

接下来是排雷的过程 如果输入的坐标数是==‘1’ 这里‘1’就是设置雷的个数相当于踩到雷了

如果没2踩到雷就继续执行Displayboard继续执行排雷过程 如果我们输入1的坐标出现溢出,自然就要重新输入

  1. if(win==row*col-EASY_COUNT)
  2. {
  3. cout<<"恭喜你,排雷成功"<<endl;
  4. DisplayBoard(mine,ROW,COL);
  5. }
  6. }
如果我们将排查的数等于总键盘的数量(9*9)-雷的数量那么我们排雷就成功了

所有代码

game.h

  1. #pragma once
  2. #include<iostream>
  3. #include<stdlib.h>
  4. #include<time.h>
  5. #define EASY_COUNT 10
  6. #define ROW 9
  7. #define COL 9
  8. #define ROWS 11
  9. #define COLS 11
  10. using namespace std;
  11. void Initboard(char board[ROWS][COLS],int rows,int cols,char set);
  12. void DisplayBoard(char board[ROWS][COLS],int row,int col);
  13. void SetMine(char board [ROWS][COLS],int row,int col);
  14. void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

game.cpp

  1. #include"game.h"
  2. void Initboard(char board[ROWS][COLS],int rows,int cols,char set)
  3. { int i=0;
  4. for(i=0;i<rows;i++)
  5. { int j=0;
  6. for(j=0;j<=cols;j++)
  7. {
  8. board[i][j]=set;
  9. }
  10. }
  11. }
  12. void DisplayBoard(char board[ROWS][COLS],int row,int col)
  13. {int i=0;
  14. cout<<"---------扫雷游戏-----------"<<endl;
  15. for(i=0;i<=col;i++)
  16. {cout<<i;
  17. }cout<<endl;
  18. for(i=1;i<=row;i++)
  19. { cout<<i;
  20. int j=0;
  21. for(j=1;j<=col;j++)
  22. {
  23. cout<<board[i][j];
  24. }cout<<endl;
  25. }
  26. }void SetMine(char board [ROWS][COLS],int row,int col) {
  27. int count = EASY_COUNT;
  28. while (count) {
  29. int x = rand() % row + 1;
  30. int y = rand() % col + 1;
  31. if (board[x][y] == '0') {
  32. board[x][y] = '1';
  33. count--;}
  34. }
  35. }
  36. int GetMineCount(char mine[ROWS][COLS],int x,int y)
  37. {
  38. return (mine[x-1][y]+mine[x][y-1]+mine[x+1][y-1]+mine[x+1][y]+mine[x+1][y+1]+mine[x][y=1]+mine[x-1][y+1]-8*'0');
  39. }
  40. void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
  41. {
  42. int x=0;
  43. int y=0;
  44. int win=0;
  45. while(win<row*col-EASY_COUNT)
  46. {cout<<"请输入要排查的目标";
  47. cin>>x>>y;
  48. if(x>=1&&x<=row&&y>=1&&y<=col)
  49. {
  50. if(mine[x][y]=='1')
  51. {cout<<"很遗憾,你被炸死了"<<endl;
  52. DisplayBoard(mine,ROW,COL);
  53. break;
  54. }
  55. else {
  56. int count = GetMineCount(mine, x, y);
  57. show[x][y] == count + '0';
  58. DisplayBoard(show, ROW, COL);
  59. win++;
  60. }
  61. }
  62. else
  63. {cout<<"坐标非法,重新输入"<<endl;}
  64. }
  65. if(win==row*col-EASY_COUNT)
  66. {
  67. cout<<"恭喜你,排雷成功"<<endl;
  68. DisplayBoard(mine,ROW,COL);
  69. }
  70. }

game执行.cpp

  1. #include"game.h"//
  2. void menu() {
  3. cout << "*******************" << endl;
  4. cout << "********1.play*****" << endl;
  5. cout << "********0. exit****" << endl;
  6. cout << "*******************" << endl;
  7. }
  8. void game() {
  9. char mine[ROWS][COLS];
  10. char show[ROWS][COLS];
  11. Initboard(mine, ROWS, COLS, '0');
  12. Initboard(show, ROWS, COLS, '*');
  13. DisplayBoard(show, ROW, COL);
  14. SetMine(mine, ROW, COL);
  15. FindMine(mine, show, ROW, COL);
  16. }
  17. int main() {
  18. int input;
  19. srand((unsigned int) time((NULL)));
  20. do {
  21. menu();
  22. cout << "请选择:>";
  23. cin >> input;
  24. switch (input) {
  25. case 1:
  26. game();
  27. break;
  28. case 0:
  29. cout << "退出游戏" << endl;
  30. break;
  31. default:
  32. cout << "选择错误,重新选择";
  33. }
  34. } while (input);
  35. return 0;
  36. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/90894
推荐阅读
相关标签
  

闽ICP备14008679号