#include <fstream>
#include <iostream>
#include <random>
using namespace std;
void drawBoard(int board[5][5]) {
cout << "\n";
for (int a = 0; a <= 4; a++) {
for (int b = 0; b <= 4; b++) {
cout << "| " << board[a][b] << " |";
}
cout << "\n";
}
}
void setBoard(int board[5][5], int bombAmount, mt19937 &seed) {
uniform_int_distribution<int> randomBomb(1, 5);
int bombPlaced = 0;
while (bombPlaced < bombAmount) {
int bombRow = randomBomb(seed);
int bombColumn = randomBomb(seed);
if (board[bombRow - 1][bombColumn - 1] != 2) {
board[bombRow - 1][bombColumn - 1] = 2;
bombPlaced++;
}
}
return;
}
void playerInput(int board[5][5], int &correctTile) {
int column;
int row;
int menu = 0;
while (menu != 2) {
cout << "\nWhat Will You Do?\n1. Check A Tile\n2. Stop\n";
cin >> menu;
while (menu > 2 || menu < 1) {
cout << "Invalid input. Try again.\n1. Check A Tile\n2. Stop\n";
cin >> menu;
}
switch (menu) {
case 1:
cout << "\nInput Column(1-5) : ";
cin >> column;
cout << "Input Row(1-5) : ";
cin >> row;
if (column >= 1 && column <= 5 && row >= 1 && row <= 5 &&
board[row - 1][column - 1] != 1) {
if (board[row - 1][column - 1] != 2) {
board[row - 1][column - 1] = 1;
correctTile++;
} else {
cout << "\nYou Hit A Bomb\n";
correctTile = 0;
return;
}
} else if (column >= 1 && column <= 5 && row >= 1 && row <= 5 &&
board[row - 1][column - 1] == 1) {
cout << "Invalid input Or Already Filled. Try again.\n";
}
drawBoard(board);
break;
case 2:
return;
default:
cout << "\nInvalid Input\n";
break;
}
}
}
int main() {
int board[5][5] = {{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}};
mt19937 seed(time(NULL));
int balance = 1000;
int bet;
int menu;
int correctTile;
int bombAmount;
ifstream inFile("data.txt");
if (inFile.is_open()) {
inFile >> balance;
inFile.close();
cout << "Data Read\n\n";
} else {
cout << "Data Read Failed\n\n";
}
do {
for (int a = 0; a <= 4; a++) {
for (int b = 0; b <= 4; b++) {
board[a][b] = 0;
}
}
cout << "Play MineSweeper? \n0 = Undiscovered Tile\n1 = Discovered Tile\n2 "
"= Bomb\n1. Play\n2. Quit\n";
cin >> menu;
while (menu > 2 || menu < 1) {
cout << "\nInvalid Option\n";
cout << "Play MineSweeper? \n0 = Undiscovered Tile\n1 = Discovered "
"Tile\n2 "
"= Bomb\n1. Play\n2. Quit\n";
cin >> menu;
}
switch (menu) {
case 1:
do {
cout << "\nMoney Left : " << balance << "\nInput Bet : ";
cin >> bet;
} while (bet < 0 || bet > balance);
balance -= bet;
cout << "\nBalance Now : " << balance << "\nHow Many Bombs? (3-5) : ";
cin >> bombAmount;
while (bombAmount > 5 || bombAmount < 3) {
cout << "\nInvalid Number!\nHow Many Bombs (3-5) : ";
cin >> bombAmount;
};
setBoard(board, bombAmount, seed);
playerInput(board, correctTile);
bet = (bet/(8-bombAmount))*correctTile;
cout << "\nYou Won " << bet << "\n";
balance += bet;
break;
case 2:
break;
default:
cout << "\nInvalid Choice\n";
break;
}
} while (menu != 2);
ofstream outFile("data.txt");
if (outFile.is_open()) {
outFile << balance;
outFile.close();
cout << "Data Written\n\n";
} else {
cout << "Data Write Failed\n\n";
}
}
1000