1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
steposvetlana [31]
3 years ago
10

Write a program that allows two players (player X and player O) to play a game of tic-tac-toe. Use a two- dimensional char array

with three rows and three columns as the game board. Each element of the array should be initialized with an asterisk (*). The players take turns making moves and the program keeps track of whose turn it is. Player X moves first. The program should run a loop that:
Computers and Technology
1 answer:
Nimfa-mama [501]3 years ago
8 0

#include <iostream>

using namespace std;

//function prototypes

void showBoard(char[][3]);

bool checkWinner(char[][3], char);

void playerMove(char[][3], char);

int main()

{

  //declare variables needed

  //declare 2D array for the board

  //and initialize with all *

  char board[3][3] = {{'*', '*', '*'},

                      {'*', '*', '*'},

                      {'*', '*', '*'}};

  int moves = 0;  //variable to keep track

                  //of number of moves

                  //to determine tie

  cout << "TIC - TAC - TOE\n\n";

  //while loop to repeat until 9 moves are done

  while(true){

      //display board

      showBoard(board);

      cout << "Player 1 moves\n";

      //get player X move

      playerMove(board, 'X');

      //increment moves counter

      moves++;

      //if this is a winning move

      //store winner and terminate

      if(checkWinner(board, 'X')){

          showBoard(board);

          cout << "\nPlayer 1 (X) wins!\n";

          return 0;

      }

      //if 9 moves are done

      //break from loop

      if(moves == 9)

          break;

      //display board again

      showBoard(board);

      cout << "Player 2 moves\n";

      //do the same thing for player O

      playerMove(board, 'O');

      moves++;

      if(checkWinner(board, 'O')){

          showBoard(board);

          cout << "\nPlayer 2 (O) wins!\n";

          return 0;

      }

  }

  //if we have gone this far and program

  //still has not terminated (no winner)

  //it means this is a tie

  showBoard(board);

  cout << "This game is a tie!\n";

  //return 0 to mark successful completion of program

  return 0;

}

//this function is helpful because we need to show

//the board repetitively during the program

void showBoard(char board[][3]){

  cout << endl;

  //loop on the rows

  for(int row = 0; row < 3; row++){

      //loop on the columns

      for(int col = 0; col < 3; col++)

          cout << board[row][col] << "    ";

      //display newline after each row

      cout << endl << endl;

  }

  cout << endl;

}

//this function checks if second argument

//is a winning player

bool checkWinner(char board[][3], char player){

  //boolean variable to check

  //for winner later

  bool flag;

  //CHECK FOR WINNER IN ROWS

  for(int row = 0; row < 3; row++){

      //initialize flag to true

      flag = true;

      //loop within a row

      for(int col = 0; col < 3; col++){

          //Notice that the right part of the

          //assignment operator, is an expression

          //with a relational operator (==)

          //this expression will yield either

          //true (1) or false (0)

          //while flag is already true (1)

          //if multiplied by true (1) will result

          //in true(0), or multiplied by false (0)

          //will result in false (0)

          flag *= (board[row][col] == player);

      }

      //after checking within row, if the flag

      //is still true at this point, it means we have

      //three chars of the same kind within the row,

      //thus we have a winner

      if(flag)

          return true;

      else

          continue;

  }

  //CHECK FOR WINNER IN COLUMNS

  //using a similar logic

  for(int col = 0; col < 3; col++){

      flag = true;

      for(int row = 0; row < 3; row++){

          flag *= (board[row][col] == player);

      }

      if(flag)

          return true;

      else

          continue;

  }

  //CHECK FIRST DIAGONAL (row = col)

  //reset flag to true

  flag = true;

  //check diagonal

  for(int i = 0; i < 3; i++){

      flag *= (board[i][i] == player);

  }

  //check if there is winner

  if(flag)

      return true;

  //CHECK OTHER DIAGONAL (row = 2 - col)

  //reset flag to true

  flag = true;

  //check diagonal

  for(int col = 0; col < 3; col++){

      flag *= (board[2-col][col] == player);

  }

  //check if there is winner

  if(flag)

      return true;

  //if all of these have been checked

  //and function still has not returned,

  //it means there is no winner

  return false;

}

//this function gets a move from the player,

//checks if it is valid, and if yes it puts

//it on the board

void playerMove(char board[][3], char player){

  //variables to store user move

  int row, col;

  //get user move

  cout << "Row: ";

  cin >> row;

  cout << "Col: ";

  cin >> col;

  //check if this is valid move

  //you have to check if that tile has

  //already been marked, or if tile

  //of choice is out of bounds of board

  while(board[row-1][col-1] != '*' ||

        row > 3 || row < 0 ||

        col > 3 || row < 0)

          {

      cout << "Invalid move! Try again\n";

      cout << "Row: ";

      cin >> row;

      cout << "Col: ";

      cin >> col;

  }

  //after validation, mark new move

  board[row-1][col-1] = player;

}

You might be interested in
having your online class there's a lot of hazards and risk you may encounter while using gadget PC or Laptop whar do you usually
Anastaziya [24]
Unsure that if your visiting a site, that it is a secure website or don't download anything unless you know for sure that it is safe
5 0
3 years ago
A mysql prompt has been opened for you. Using the college database, complete the following tasks (use either a single-line or a
Pavlova-9 [17]

Answer:

See Explanation

Explanation:

Given

See attachment 1 for proper table definition

To answer this question, one of the basic sql commands (the "create" command) will be used to create the required table, followed by the fields of the table.

<em>I could not submit my answer directly. So, I added two additional attachments which represent the answer section and the explanation section, respectively.</em>

3 0
3 years ago
Which systems provide a single, cohesive platform
sergejj [24]

Answer:

ERP systems provide a single, cohesive platform

Explanation:

“ERP means Enterprise Resource Planning”. ERP is One solution for all the business need. It is a software(Business process management software) which does various functions and gives one single application for running all the process of the organization. It shares a common Database which “enables the user to perform multiple task” from multiple location.

ERP module includes Supply chain management, financials, online sales, decision support system, warehouse management, human resource, CRM, etc. Using ERP we can increase the interaction among the staff, reduce labor cost, etc.

6 0
4 years ago
__________ BI apps use real-time or near real-time data in order to support line managers who need to monitor performance of his
ruslelena [56]

Answer: Operational BI(Business Intelligence)

Explanation:Operational business intelligence is the tool that works on the organizational performance through evaluation and testing by analyzing the business process and data.It is rapid responding tool for the changing business pattern and demands.

Strategical, tactical and traditional business intelligence tool don't provide the evaluation of the business performance in the accordance with business trends rather having strategical approach, planned approach and traditional approach respectively.

Thus, the correct option is option(b).

8 0
3 years ago
What does the poster exemplify?
zloy xaker [14]

Answer:

try D

Explanation:

8 0
3 years ago
Read 2 more answers
Other questions:
  • Decisions 1 and 3 are both ____________ decisions because ____________________.
    9·1 answer
  • 7.
    6·1 answer
  • Because health and safety are important in all workplaces, not just hazardous ones, what working conditions must ALL employers p
    10·2 answers
  • This measures how close a biometric reading is to a prerecorded template
    11·1 answer
  • A(n) monitoring vulnerability scanner is one that listens in on the network and determines vulnerable versions of both server an
    7·1 answer
  • Conversion of a continuous stream of sound into a series of ones and zeroes that can be interpreted by computers results in
    12·1 answer
  • Technologies have advanced to allow computer chips to be placed in almost anything and to be connected to a network almost anywh
    8·1 answer
  • How does recorded audio stay on an audio tape
    12·1 answer
  • use the internet to research the SYSTEM account. Why is it nessesary to include this account with full control on a directory
    13·1 answer
  • Write a program that will generate a personalized invitation within a text file for each guest in the guest list file using the
    15·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!