Imagine we are using a two-dimensional array as the basis for creating the game
ID: 3666607 • Letter: I
Question
Imagine we are using a two-dimensional array as the basis for creating the game battleship. In the game of battleship a '~'character entry in the array represents ocean (i.e., not a ship), a '#' character represents a place in the ocean where part of a ship is present, and an 'H'character represents a place in the ocean where part of a ship is present and has been hit by a torpedo. Thus, a ship with all 'H' characters means the ship has been sunk. Declare a two-dimensional array that is 25 times 25 that represents the entire ocean and an If statement that prints "HIT" if a torpedo hits a ship given the coordinates X and Y. Write a C++ program that will read in a file representing a game board with 25 lines where each line has 25 characters corresponding to the description above. An example file might look like: You should write a function called Fire that will take an X and Y coordinate and print "HIT" if a ship is hit and "MISS" if a ship is missed. If a ship is HIT you should update the array with an 'H' character to indicate the ship was hit. If a ship is hit that has already been hit at that location you should print "HIT AGAIN". You should write a second function called FleetSunk that will determine if all the ships have been sunk. Your C++ program must then call these functions until all the ships have been sunk, at which point the program should display "The fleet was destroyed!".Explanation / Answer
Board.txt
##~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
Battleship.cpp
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
ifstream myinfile;
const int gameBoardWidth = 25;
const int gameBoardHeight = 25;
void Fire(const int gameBoardWidth, const int gameBoardHeight, int X, int Y, char gameBoard[][25]);
void FleetSunk(const int gameBoardWidth, const int gameBoardHeight, int X, int Y, char gameBoard[][25], bool &GameOver);
int main()
{
cout << "Titus Dyck -- Lab 9 (BattleShip)" << endl << endl;
myinfile.open("Board.txt"); // Enter your own game board file name here
// variables
char gameBoard[gameBoardWidth][gameBoardHeight];
int X;
int Y;
bool GameOver;
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 25; j++)
myinfile >> gameBoard[i][j];
}
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 25; j++)
myinfile >> gameBoard[i][j];
}
GameOver = false;
while (!GameOver)
{
cout << endl << "Please enter a X cordinate from 0 to 24 for your Attack" << endl << endl;
cin >> X;
cout << endl;
cout << "Please enter a Y cordinate from 0 to 24 for your Attack" << endl << endl;
cin >> Y;
cout << endl;
Fire(gameBoardHeight, gameBoardWidth, X, Y,gameBoard);
FleetSunk(gameBoardHeight, gameBoardWidth, X, Y,gameBoard, GameOver);
}
//closing program statements
myinfile.close();
system("pause");
return 0;
}
// function declarations
void Fire(const int gameBoardWidth, const int gameBoardHeight, int X, int Y, char gameBoard[][25])
{
if (gameBoard[X][Y] == '#')
{
cout << "HIT" << endl;
gameBoard[X][Y] = 'H';
}
else if (gameBoard[X][Y] == 'H')
{
cout << "HIT AGAIN" << endl;
}
else
{
cout << "MISS" << endl;
}
}
void FleetSunk(const int gameBoardWidth, const int gameBoardHeight, int X, int Y, char gameBoard[][25], bool &GameOver)
{
bool NoPound;
NoPound = false;
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 25; j++)
if (gameBoard[i][j] == '~' || gameBoard[i][j] == 'H')
NoPound = true;
else
{
NoPound = false;
break;
}
if (NoPound == false)
break;
}
if (NoPound == true)
{
GameOver = true;
cout << "The Entire Enemey Fleet has been destroyed, well done Admiral!" << endl << endl;
cout << " Game Over" << endl << endl;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.