赞
踩
今天简单介绍一下扫雷代码
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的雷的排查出来算出周围雷的个数
- void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
- {
- int x=0;
- int y=0;
- int win=0;
- while(win<row*col-EASY_COUNT)
- {cout<<"请输入要排查的目标";
- cin>>x>>y;
- if(x>=1&&x<=row&&y>=1&&y<=col)
- {
- if(mine[x][y]=='1')
- {cout<<"很遗憾,你被炸死了"<<endl;
- DisplayBoard(mine,ROW,COL);
- break;
- }
- else {
- int count = GetMineCount(mine, x, y);
- show[x][y] == count + '0';
- DisplayBoard(show, ROW, COL);
- win++;
- }
- }
- else
- {cout<<"坐标非法,重新输入"<<endl;}
-
- }
接下来是排雷的过程 如果输入的坐标数是==‘1’ 这里‘1’就是设置雷的个数相当于踩到雷了
如果没2踩到雷就继续执行Displayboard继续执行排雷过程 如果我们输入1的坐标出现溢出,自然就要重新输入
- if(win==row*col-EASY_COUNT)
- {
- cout<<"恭喜你,排雷成功"<<endl;
- DisplayBoard(mine,ROW,COL);
- }
-
-
- }
如果我们将排查的数等于总键盘的数量(9*9)-雷的数量那么我们排雷就成功了
所有代码
game.h
- #pragma once
- #include<iostream>
- #include<stdlib.h>
- #include<time.h>
- #define EASY_COUNT 10
- #define ROW 9
- #define COL 9
- #define ROWS 11
- #define COLS 11
- using namespace std;
- void Initboard(char board[ROWS][COLS],int rows,int cols,char set);
- void DisplayBoard(char board[ROWS][COLS],int row,int col);
- void SetMine(char board [ROWS][COLS],int row,int col);
- void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);
game.cpp
- #include"game.h"
- void Initboard(char board[ROWS][COLS],int rows,int cols,char set)
- { int i=0;
- for(i=0;i<rows;i++)
- { int j=0;
- for(j=0;j<=cols;j++)
- {
- board[i][j]=set;
- }
-
- }
- }
- void DisplayBoard(char board[ROWS][COLS],int row,int col)
- {int i=0;
- cout<<"---------扫雷游戏-----------"<<endl;
- for(i=0;i<=col;i++)
- {cout<<i;
-
- }cout<<endl;
- for(i=1;i<=row;i++)
- { cout<<i;
- int j=0;
- for(j=1;j<=col;j++)
- {
- cout<<board[i][j];
-
- }cout<<endl;
-
- }
-
-
- }void SetMine(char board [ROWS][COLS],int row,int col) {
- int count = EASY_COUNT;
- while (count) {
- int x = rand() % row + 1;
- int y = rand() % col + 1;
- if (board[x][y] == '0') {
- board[x][y] = '1';
- count--;}
- }
- }
- int GetMineCount(char mine[ROWS][COLS],int x,int y)
- {
- 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');
-
-
- }
- void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
- {
- int x=0;
- int y=0;
- int win=0;
- while(win<row*col-EASY_COUNT)
- {cout<<"请输入要排查的目标";
- cin>>x>>y;
- if(x>=1&&x<=row&&y>=1&&y<=col)
- {
- if(mine[x][y]=='1')
- {cout<<"很遗憾,你被炸死了"<<endl;
- DisplayBoard(mine,ROW,COL);
- break;
- }
- else {
- int count = GetMineCount(mine, x, y);
- show[x][y] == count + '0';
- DisplayBoard(show, ROW, COL);
- win++;
- }
- }
- else
- {cout<<"坐标非法,重新输入"<<endl;}
-
- }
- if(win==row*col-EASY_COUNT)
- {
- cout<<"恭喜你,排雷成功"<<endl;
- DisplayBoard(mine,ROW,COL);
- }
-
-
- }
game执行.cpp
- #include"game.h"//
-
- void menu() {
- cout << "*******************" << endl;
- cout << "********1.play*****" << endl;
- cout << "********0. exit****" << endl;
- cout << "*******************" << endl;
- }
-
- void game() {
- char mine[ROWS][COLS];
- char show[ROWS][COLS];
- Initboard(mine, ROWS, COLS, '0');
- Initboard(show, ROWS, COLS, '*');
- DisplayBoard(show, ROW, COL);
- SetMine(mine, ROW, COL);
- FindMine(mine, show, ROW, COL);
- }
-
- int main() {
- int input;
- srand((unsigned int) time((NULL)));
- do {
- menu();
- cout << "请选择:>";
- cin >> input;
- switch (input) {
- case 1:
- game();
- break;
- case 0:
- cout << "退出游戏" << endl;
- break;
- default:
- cout << "选择错误,重新选择";
- }
-
- } while (input);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。