Home > Mobile >  How to put what the user picks for the row and column in the board
How to put what the user picks for the row and column in the board

Time:11-10

So my question is how do I put what the user enters, for example, they put row : 1 and column: 2 in my board that I made. I'm working on this in the void playerChoice function.

I've thought of some solutions to this problem like board[row][column] = 'X' in like an if statement with board[row][column] = 'O' as well. Is this alright?

Hopefully you guys can help figure this problem this out with me.

const int ROWS = 3; // For the rows 
const int COLS = 3; // For the number of coluoms;
void showBoard(const char[][COLS], int); // Shows the board 
void playerChoice(char[][COLS], char); // shows the player choice 
int winner(const char[][COLS], const char, string);

int main()
{
char board[ROWS][COLS] = { { '*', '*', '*' },{ '*', '*', '*' },{'*', '*', '*'} }; 
string winner = " ";
showBoard(board, 3); // displays the board


for (int i = 0; i < 3; i  )
{
    playerChoice(board, 'X');
    showBoard(board, 3);
    
    playerChoice(board, 'O');
    showBoard(board, 3);
}

cout << "The winner is:" << winner; 
} 


void showBoard(const char arr[][COLS], int SIZE)
{
for (int row = 0; row < SIZE; row  )
{
    for (int col = 0; col < SIZE; col  )
        cout << '|' << arr[row][col]; 
    cout << '|' << endl;
}
}


 void playerChoice(char arr[][COLS], char name)
{
int row, columns;

 

cout << "What row would you like?\n"; 
cout << "Row: ";
cin >> row; 

while (row < 1 || row > 3)
{
    cout << "Error please pick a row in between 1 and 3.\n";
    cout << "Row: ";
    cin >> row;         
    cout << endl; 

}

cout << "What column would you like?\n";
cout << "Column: ";
cin >> columns;

while (columns < 1 || columns > 3)
{
    cout << "Error,please pick a row in between 1 and 3.\n";
    cout << "Column: ";
    cin >> columns; 
    cout << endl; 
}



}
int winner(const char[][COLS], const char, string)
{
 

// working on this.


return winner; 

}

CodePudding user response:

Will this work for you?

unsigned int row = 0u;
unsigned int column = 0u;
char board[3][3] = {' '};

std::cout << "Enter row: ";
std::cin >> row;
std::cout << "Enter column: ";
std::cin >> column;

// Insert a character at the User's row and column
board[row][column] = 'X';

If you want to insert the User's coordinates into the board, you'll need a different type of board.

Edit 1: A different type of board
Let's call the items of the board a Cell.
In order to store the row and column, you'll need a cell that can store the row and column:

struct Cell
{
  char c;
  unsigned int row;
  unsigned int column;
};

Cell board[3][3];
//...
board[row][column].c = 'O';
board[row][column].row = row;
board[row][column].column = column;

CodePudding user response:

I've thought of some solutions to this problem like board[row][column] = 'X' in like an if statement with board[row][column] = 'O' as well.

Yes. You can try the code below:

   if (arr[row - 1][columns - 1] == '*')
    {
        arr[row - 1][columns - 1] = name;
    }
    else
    {
        cout << "Retry" << endl;
        playerChoice(arr, name);
    }
  • Related