#include <fstream>
#include <iostream>
#include <random>
using namespace std;
void drawBoard(int fakeBoard[10][5]) {
cout << "\n";
for (int row = 0; row <= 9; row++) {
for (int column = 0; column <= 4; column++) {
cout << "| " << fakeBoard[row][column] << " |";
}
cout << "\n";
}
}
void setBoard(int board[10][5], mt19937 &seed) {
uniform_int_distribution<int> randomDragon(1, 5);
for (int a = 0; a <= 9; a++) {
int dragonColumn = randomDragon(seed);
board[a][dragonColumn - 1] = 2;
}
return;
}
void playerInput(int board[10][5], int fakeBoard[10][5], int &correctTile) {
int column = 0;
int row = 0;
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;
if (column >= 1 && column <= 5 && board[row][column - 1] != 1) {
if (board[row][column - 1] != 2) {
board[row][column - 1] = 1;
fakeBoard[row][column - 1] = 1;
correctTile++;
row++;
} else {
cout << "\nYou Are Eaten By A Dragon\n";
correctTile = 0;
return;
}
} else if (column < 1 || column > 5) {
cout << "Invalid Input. Try again.\n";
}
drawBoard(fakeBoard);
break;
case 2:
return;
default:
cout << "\nInvalid Input\n";
break;
}
if (row > 9) {
correctTile *= 2;
return;
}
}
}
int main() {
int board[10][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}, {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}};
;
int fakeBoard[10][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}, {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 = 0;
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 <= 9; a++) {
for (int b = 0; b <= 4; b++) {
board[a][b] = 0;
fakeBoard[a][b] = 0;
}
}
correctTile = 0;
cout << "Play KnightFall? \n0 = Undiscovered Tile\n1 = Discovered Tile\n2 "
"= Dragon\n1. Play\n2. Quit\n";
cin >> menu;
while (menu > 2 || menu < 1) {
cout << "\nInvalid Option\n";
cout << "Play KnightFall? \n0 = Undiscovered Tile\n1 = Discovered "
"Tile\n2 "
"= Dragon\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 << "\n";
setBoard(board, seed);
playerInput(board, fakeBoard, correctTile);
if (correctTile > 0) {
bet = (bet / 3) * 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