#include <iostream>
#include <stdlib.h>
#include <ctime>
class Minesweeper {
public:
void buildBoards();
void printTopLvlBoard();
void printBottomLvlBoard();
void userEntry(int x, int y);
void gameOver();
bool stateGood();
private:
static const int CLMN_MAX_SIZE = 5;
static const int ROW_MAX_SIZE = 5;
char topLvlBoard[ROW_MAX_SIZE][CLMN_MAX_SIZE];
char bottomLvlBoard[ROW_MAX_SIZE][CLMN_MAX_SIZE];
bool gameState;
};
void Minesweeper::printTopLvlBoard(){
std:: cout << "Board" << std:: endl;
for(int i = 0; i < ROW_MAX_SIZE; i++) {
for(int j = 0; j < CLMN_MAX_SIZE; j++) {
std::cout << topLvlBoard[i][j];
}
std::cout << std::endl;
}
}
void Minesweeper::buildBoards(){
for(int i = 0; i < ROW_MAX_SIZE; i++){
for(int j = 0; j < CLMN_MAX_SIZE; j++){
bottomLvlBoard[i][j] = 'O';
topLvlBoard[i][j] = 'x';
}
}
for(int k = 0; k < 5; k++) {
bottomLvlBoard[**rand()%5**][**rand()%5**] = 'B';
}
gameState = true;
}
void Minesweeper::printBottomLvlBoard(){
for(int i = 0; i < CLMN_MAX_SIZE; i++){
for(int j = 0; j < ROW_MAX_SIZE; j++){
std::cout << bottomLvlBoard[i][j];
}
std::cout << std:: endl;
}
}
void Minesweeper::userEntry(int x,int y){
char bottomTmp = bottomLvlBoard[x-1][y-1];
if(bottomTmp == 'O'){
topLvlBoard[x-1][y-1] = '*';
bottomLvlBoard[x-1][y-1] = 'C';
}
else if(bottomTmp == 'B'){
gameOver();
}
}
void Minesweeper::gameOver() {
std::cout << std:: endl;
std::cout << "**********************" << std:: endl;
std::cout << "**********************" << std:: endl;
std::cout << "*** BOMB BOMB BOMB ***" << std:: endl;
std::cout << "*** BOMB BOMB BOMB ***" << std:: endl;
std::cout << "*** BOMB BOMB BOMB ***" << std:: endl;
std::cout << "*** BOMB BOMB BOMB ***" << std:: endl;
std::cout << "**********************" << std:: endl;
std::cout << "**********************" << std:: endl;
std::cout << std:: endl;
std::cout << "You have landed on a bomb!" << std:: endl;
std::cout << std:: endl;
printBottomLvlBoard();
gameState = false;
}
bool Minesweeper::stateGood(){
bool tmpYesNo = (gameState == true) ? true : false;
return tmpYesNo;
}
无论如何通过 rand() 函数来强制执行显式随机性?每次我运行这个程序时,我都会在网格上得到相同的可预测的炸弹模式。即使我更改 main() 中的种子,我仍然只能得到大约 3 种模式的变化。