Declare a two-dimensional char array that is 25 by 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:    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~#####~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~#~~~~~~~~~~    ~~~~~~~~~~~~~~#~~~~~~~~~~    ~~~~~~~~~~~~~~#~~~~~~~~~~    ~~~~~~~~~~~~~~#~~~~~~~~~~    ~~~~~~~~~~~~~~#~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~#####~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~######~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~#####~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~#~~~~~    ~~~~~~~~~~~~~~~~~~~#~~~~~    ~~~~~~~~~~~~~~~~~~~#~~~~~    ~~~~~~~~~~~~~~~~~~~#~~~~~    ~~~######~~~~~~~~~~#~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~    It wont appear.   Code is below: /*Imagine we are using a two-dimensional array as the basis for creating the game battle- ship. 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 a ‘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 char array that is 25 by 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. 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!”. Your game loop logic (the main logic of a game) should like like the following: do {Fire(x, y, gameBoard);} while(!FleetSunk(gameBoard));*/ #include <iostream>#include <fstream>#include <string.h>#include <windows.h> using namespace std; //function prototypesvoid Fire(char board[][25]);void FleetSunk(char board[][25], int&); int main(){//In cout statement below substitute your name and lab numbercout << "Jaime Ross -- Lab 8" << endl << endl;//Variable declarationschar board[25][25];ifstream infile;infile.open("board.dat");//Program logicif (!infile){cout << "Cannot open file." << endl;}for (int i = 0; i < 25; i++){for (int j = 0; j < 25; j++){char bs;infile >> bs;board[i][j] = bs;}}int fs = 0;do{Fire(board);FleetSunk(board, fs);} while (fs == 0);system("pause");return 0;}void Fire(char board[25][25]){int row = 0, row1 = 0;int col = 0, col1 = 0; cout << "\nEnter row and column you want to hit: ";cin >> row1;cin >> col1;row = row1 - 1;col = col1 - 1;switch (board[row][col]){case '#':if (board[row - 1][col] == 'H'){cout << "HIT AGAIN" << endl;board[row][col] = 'H';}else if (board[row + 1][col] == 'H'){cout << "HIT AGAIN" << endl;board[row][col] = 'H';}else if (board[row][col - 1] == 'H'){cout << "HIT AGAIN" << endl;board[row][col] = 'H';}else if (board[row][col + 1] == 'H'){cout << "HIT AGAIN" << endl;board[row][col] = 'H';}else{cout << "HIT" << endl;board[row][col] = 'H';}break; case '~':cout << "MISS" << endl;break; case 'H':cout << "You already destroyed this ship! :" << endl;break;}}void FleetSunk(char board[25][25], int& fs){//checking if all ships have sunkfor (int i = 0; i < 25; i++){for (int j = 0; j < 25; j++){if (board[i][j] == '#'){fs = 0;return;}}}cout << "The last fleet has been destoryed." << endl;fs = 1;}

Programming Logic & Design Comprehensive
9th Edition
ISBN:9781337669405
Author:FARRELL
Publisher:FARRELL
Chapter8: Advanced Data Handling Concepts
Section: Chapter Questions
Problem 7PE
icon
Related questions
Question

Declare a two-dimensional char array that is 25 by 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:

    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~#####~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~#~~~~~~~~~~
    ~~~~~~~~~~~~~~#~~~~~~~~~~
    ~~~~~~~~~~~~~~#~~~~~~~~~~
    ~~~~~~~~~~~~~~#~~~~~~~~~~
    ~~~~~~~~~~~~~~#~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~#####~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~######~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~#####~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~#~~~~~
    ~~~~~~~~~~~~~~~~~~~#~~~~~
    ~~~~~~~~~~~~~~~~~~~#~~~~~
    ~~~~~~~~~~~~~~~~~~~#~~~~~
    ~~~######~~~~~~~~~~#~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~   

It wont appear.

 

Code is below:

/*
Imagine we are using a two-dimensional array as the basis for creating the game battle- ship. 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 a ‘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 char array that is 25 by 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.

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!”.

Your game loop logic (the main logic of a game) should like like the following:

do {
Fire(x, y, gameBoard);
} while(!FleetSunk(gameBoard));
*/

#include <iostream>
#include <fstream>
#include <string.h>
#include <windows.h>

using namespace std;

//function prototypes
void Fire(char board[][25]);
void FleetSunk(char board[][25], int&);

int main()
{
//In cout statement below substitute your name and lab number
cout << "Jaime Ross -- Lab 8" << endl << endl;
//Variable declarations
char board[25][25];
ifstream infile;
infile.open("board.dat");
//Program logic
if (!infile)
{
cout << "Cannot open file." << endl;
}
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 25; j++)
{
char bs;
infile >> bs;
board[i][j] = bs;
}
}
int fs = 0;
do
{
Fire(board);
FleetSunk(board, fs);
} while (fs == 0);
system("pause");
return 0;
}
void Fire(char board[25][25])
{
int row = 0, row1 = 0;
int col = 0, col1 = 0;

cout << "\nEnter row and column you want to hit: ";
cin >> row1;
cin >> col1;
row = row1 - 1;
col = col1 - 1;
switch (board[row][col])
{
case '#':
if (board[row - 1][col] == 'H')
{
cout << "HIT AGAIN" << endl;
board[row][col] = 'H';
}
else if (board[row + 1][col] == 'H')
{
cout << "HIT AGAIN" << endl;
board[row][col] = 'H';
}
else if (board[row][col - 1] == 'H')
{
cout << "HIT AGAIN" << endl;
board[row][col] = 'H';
}
else if (board[row][col + 1] == 'H')
{
cout << "HIT AGAIN" << endl;
board[row][col] = 'H';
}
else
{
cout << "HIT" << endl;
board[row][col] = 'H';
}
break;

case '~':
cout << "MISS" << endl;
break;

case 'H':
cout << "You already destroyed this ship! :" << endl;
break;
}
}
void FleetSunk(char board[25][25], int& fs)
{
//checking if all ships have sunk
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 25; j++)
{
if (board[i][j] == '#')
{
fs = 0;
return;
}
}
}
cout << "The last fleet has been destoryed." << endl;
fs = 1;
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 3 images

Blurred answer
Knowledge Booster
Program on Numbers
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning