139 lines
2.4 KiB
C++
139 lines
2.4 KiB
C++
#include <iostream>
|
|
#include <unistd.h>
|
|
|
|
using std::cin;
|
|
using std::cout;
|
|
|
|
#ifdef WIN32
|
|
#define CLEAR system("cls")
|
|
#else
|
|
#define CLEAR system("clear")
|
|
#endif
|
|
|
|
void printmatrix(int matrix[6][6])
|
|
{
|
|
for (int i = 0; i < 6; i++) {
|
|
for (int ii = 0; ii < 6; ii++)
|
|
cout << matrix[i][ii] << " ";
|
|
cout << "\n";
|
|
}
|
|
}
|
|
|
|
void check(int matrix[6][6], int &j)
|
|
{
|
|
for (int i = 0; i < 6; i++) {
|
|
for (int ii = 0; ii < 6; ii++)
|
|
if (matrix[i][ii] == 0) j++;
|
|
}
|
|
}
|
|
|
|
void getfirecoordinates(int &r, int &c)
|
|
{
|
|
do {
|
|
cout << "\n\nFire at ROWS: ";
|
|
cin >> r;
|
|
} while (r < 0 || r > 6);
|
|
|
|
do {
|
|
cout << "\nFire at COLUMNS: ";
|
|
cin >> c;
|
|
} while (c < 0 || c > 6);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
int p1[6][6];
|
|
int p2[6][6];
|
|
|
|
int r, c; // Collects coordinates to fire
|
|
int j; // Counter used to check for victory
|
|
|
|
// Seeds the pseudo RNG with the current time
|
|
srand((unsigned int)time(NULL));
|
|
restart:
|
|
|
|
CLEAR;
|
|
cout << "\n▂▃▄▅▆▇█▓▒░ CXXBattleShip ░▒▓█▇▆▅▄▃▂";
|
|
cout << "\n\nWelcome!";
|
|
cout << "\n\n(1) Start [2P mode]\n\n(2) Credits\n\n(3) Exit...\n";
|
|
cin >> j;
|
|
|
|
switch (j) {
|
|
case 1:
|
|
CLEAR;
|
|
break;
|
|
case 2:
|
|
CLEAR;
|
|
cout << "\n▂▃▄▅▆▇█▓▒░ CXXBattleShip ░▒▓█▇▆▅▄▃▂";
|
|
cout << "\n\nDeveloped by: Borededdy\nSome minor help: MGislv";
|
|
cout << "\n\nThank you for playing this!";
|
|
cout << "\nIf you enjoyed it, please star our repo ;)";
|
|
return 0;
|
|
default:
|
|
return 0;
|
|
}
|
|
|
|
// Populate 2d arrays
|
|
for (int i = 0; i < 6; i++) {
|
|
for (int ii = 0; ii < 6; ii++) {
|
|
p1[ii][i] = rand() % 2;
|
|
p2[ii][i] = rand() % 2;
|
|
}
|
|
}
|
|
|
|
j = 0;
|
|
while (1) {
|
|
cout << "#-----Player 1-----#\n\n\n";
|
|
printmatrix(p1);
|
|
|
|
getfirecoordinates(r, c);
|
|
|
|
if (p2[r][c] == 1) {
|
|
cout << "\n\nPLAYER 1 > Scored a hit!\n";
|
|
p2[r][c] = 0;
|
|
} else {
|
|
cout << "\n\nPLAYER 1 > Missed!\n";
|
|
}
|
|
sleep(4);
|
|
|
|
CLEAR;
|
|
check(p2, j);
|
|
|
|
if (j == 36) {
|
|
cout << "PLAYER 1 > Wins!\n";
|
|
break;
|
|
}
|
|
j = 0;
|
|
|
|
cout << "#-----Player 2-----#\n\n\n";
|
|
printmatrix(p2);
|
|
|
|
getfirecoordinates(r, c);
|
|
|
|
if (p1[r][c] == 1) {
|
|
cout << "\n\nPLAYER 2 > Scored a hit!\n";
|
|
p1[r][c] = 0;
|
|
} else {
|
|
cout << "\n\nPLAYER 2 > Missed!\n";
|
|
}
|
|
sleep(4);
|
|
|
|
CLEAR;
|
|
check(p1, j);
|
|
|
|
if (j == 36) {
|
|
cout << "PLAYER 2 > Wins!";
|
|
break;
|
|
}
|
|
j = 0;
|
|
}
|
|
|
|
cout << "\n\nWant to restart? [0 = yes]\n";
|
|
cin >> j;
|
|
|
|
if (j == 0)
|
|
goto restart;
|
|
else
|
|
return 0;
|
|
}
|