0

次のコードを実行しようとすると、Xcode はリンカー エラーがあると表示します。何が問題ですか?

エラー:

アーキテクチャ x86_64 の未定義シンボル: 「player1IsWinnerIf()」、参照元: main.o の _main 「player2IsWinnerIf()」、参照元: main.o の _main

ld: アーキテクチャ x86_64 のシンボルが見つかりませんでした。

コード:

#include <iostream>
using namespace std;

const int numRow = 3;
const int numColumn = 3;
const char blank = ' ';
   
class position
{
public:
position();
//Postcondition
void positionPlacement()const;
  
private:
char board[3][3];
};

void InitializeBoard(char board[][numColumn], int R, int C);
void DisplayBoard(char board[][numColumn], int R);
void positionPlacementPlayer1();
void positionPlacementPlayer2();
char player1IsWinnerIf();
char player2IsWinnerIf();
int positionOption = 0;

int main()
{
char board[numRow][numColumn];
int Row = 3;
int Column = 3;
char response = 'Y';

while(response == 'Y' || response == 'y')
{
    InitializeBoard(board, Row, Column);
    DisplayBoard(board, Row);

    
    do
    {
        //player 1 turn
        positionPlacementPlayer1();
        DisplayBoard(board, Row);
        player1IsWinnerIf();
        
        //player 2 turn
        positionPlacementPlayer2();
        DisplayBoard(board, Row);
        player2IsWinnerIf();
    }
    
    
    while (player1IsWinnerIf() != '1' || player2IsWinnerIf() != '1');
    
    if(player1IsWinnerIf() == '1')
    {
        DisplayBoard(board, Row);
        cout<<"Player one is the winner!"<<endl;
        cout<<"Would you like to play again?"<<endl;
        cin>>response;
    }
    else if(player2IsWinnerIf() == '1')
    {
        DisplayBoard(board, Row);
        cout<<"Player two is the winner!"<<endl;
        cout<<"Would you like to play again?"<<endl;
        cin>>response;
    }
    else
    {
        DisplayBoard(board, Row);
        cout<<"Draw. Neither player won."<<endl;
        cout<<"Would you like to play again?"<<endl;
        cin>>response;
    }
}

return 0;
}

void InitializeBoard(char board[][numColumn], int R, int C)
{
int row, column;
for (row = 0; row<R; row++)
    for(column = 0; column<C; column++)
        board[row][column] = blank;
}

void DisplayBoard(char board[][numColumn], int R)
{
int row;
cout<<"This is a TicTacToe Board."<<endl;
for (row = 0; row<R; row++)
{
    cout<<' '<<board[row][0]<<'|'<<board[row][1]<<'|'<<board[row][2]<<endl;
    cout<<"-------"<<endl;
}
}


char board[3][3];


void positionPlacementPlayer1()
//doesn't need a variable in () because it asks for one below
{
cout<<"Player 1 (X), please choose an available position (1-9). For example, if you would like
the top middle, you would enter '2', if you wanted the bottom left, you would enter '7', 
and so on and so forth.";
cin>>positionOption;
switch(positionOption)
{
    case '1': board[0][0] = 'X';
        break;
    case '2': board[0][1] = 'X';
        break;
    case '3': board[0][2] = 'X';
        break;
    case '4': board[1][0] = 'X';
        break;
    case '5': board[1][1] = 'X';
        break;
    case '6': board[1][2] = 'X';
        break;
    case '7': board[2][0] = 'X';
        break;
    case '8': board[2][1] = 'X';
        break;
    case '9': board[2][2] = 'X';
        break;
    default:
        cout<<"This is not a valid position."<<endl;
}
}

void positionPlacementPlayer2()
{
cout<<"Player 2 (O), please choose an available position (1-9). For example, if you would like
the top middle, you would enter '2', if you wanted the bottom left, you would enter '7', and so
on and so forth.";
cin>>positionOption;
switch(positionOption)
{
    case '1': board[0][0] = 'O';
        break;
    case '2': board[0][1] = 'O';
        break;
    case '3': board[0][2] = 'O';
        break;
    case '4': board[1][0] = 'O';
        break;
    case '5': board[1][1] = 'O';
        break;
    case '6': board[1][2] = 'O';
        break;
    case '7': board[2][0] = 'O';
        break;
    case '8': board[2][1] = 'O';
        break;
    case '9': board[2][2] = 'O';
        break;
    default:
        cout<<"This is not a valid position."<<endl;
}
}

char Player1IsWinnerIf()
{
//player 1 can only be the winner if they have a full row of X, full column of X, or a full
//diagonal of X

if(board[0][0]=='X' && board[0][1]=='X' && board && board[0][2]=='X')
    //row 0
    return 1;
else if(board[1][0]=='X' && board[1][1]=='X' && board[1][2]=='X')
    //row 1
    return 1;
else if(board[2][0]=='X' && board[2][1]=='X' && board[2][2]=='X')
    //row 2
    return 1;
else if(board[0][0]=='X' && board[1][0]=='X' && board[2][0]=='X')
    //column 0
    return 1;
else if(board[0][1]=='X' && board[1][1]=='X' && board[2][1]=='X')
    //column 1
    return 1;
else if(board[0][2]=='X' && board[1][2]=='X' && board[2][2]=='X')
    //column 2
    return 1;
else if(board[0][0]=='X' && board[1][1]=='X' && board[2][2]=='X')
    //diagonal
    return 1;
else if(board[0][2]=='X' && board[1][1]=='X' && board[2][0]=='X')
    //diagonal
    return 1;
else
    return -1;
}

char Player2IsWinnerIf()
{
//player 2 can only be the winner if they have a full row of O, full column of O, or a full
//diagonal of O

if(board[0][0]=='O' && board[0][1]=='O' && board[0][2]=='O')
    //row 0
    return 1;
else if(board[1][0]=='O' && board[1][1]=='O' && board[1][2]=='O')
    //row 1
    return 1;
else if(board[2][0]=='O' && board[2][1]=='O' && board[2][2]=='O')
    //row 2
    return 1;
else if(board[0][0]=='O' && board[1][0]=='O' && board[2][0]=='O')
    //column 0
    return 1;
else if(board[0][1]=='O' && board[1][1]=='O' && board[2][1]=='O')
    //column 1
    return 1;
else if(board[0][2]=='O' && board[1][2]=='O' && board[2][2]=='O')
    //column 2
    return 1;
else if(board[0][0]=='O' && board[1][1]=='O' && board[2][2]=='O')
    //diagonal
    return 1;
else if(board[0][2]=='O' && board[1][1]=='O' && board[2][0]=='O')
    //diagonal
    return 1;
else
    return -1;
}

//switch(toupper(CINANSWER[0])
4

1 に答える 1

1
char player1IsWinnerIf();

char Player1IsWinnerIf() {...}

違いがわかりますか?

于 2013-10-30T22:38:41.050 に答える