c++:井字游戏中的LNK2019和1120错误

标签 c++

所以我试图制作一个井字游戏,但我遇到了错误:

Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "void __cdecl check(char * const,bool)" (?check@@YAXQAD_N@Z) referenced in function _main tictac
Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "void __cdecl WriteTable(char * const)" (?WriteTable@@YAXQAD@Z) referenced in function _main tictac
Severity Code Description Project File Line Suppression State Error LNK1120 2 unresolved externals tictac I hope anyone of you can help me. code:

#include <iostream>
using namespace std;

void check(char t[], bool end);
void WriteTable(char t[]);
void playerX(char t[]);
void playerO(char t[]);

int main() {
bool turn = true;
char t[9] = "";
bool end = false;
do {
    WriteTable(t);
    if (turn == true) {
        playerX(t);
        turn = false;
    }
    else {
        playerO(t);
        turn = true;
    }

    check(t, end);
} while (end == false);

system("pause");
return 0;
}

void izpis(char t[]) {
for (int i = 0; i < 9; i++) {
    cout << t[i] << " ";
    if ((i + 1) % 3 == 0) {
        cout << endl;
    }
}
}

void playerX(char t[]) {
int a;
cout << "playerX: ";
do {
    cin >> a;
    if (t[a - 1] == 0) {
        t[a - 1] = 'X';
    }
} while (t[a - 1] != 'X');
}

void playerO(char t[]) {
int a;
cout << "playerO: ";
do {
    cin >> a;
    if (t[a - 1] == 0) {
        t[a - 1] = 'O';
    }
} while (t[a - 1] != 'O');
}

void check(int t[], bool end) {

bool equal = false;

if (t[0] == 'X' || t[1] == 'X' || t[2] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[3] == 'X' || t[4] == 'X' || t[5] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[6] == 'X' || t[7] == 'X' || t[8] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[0] == 'X' || t[3] == 'X' || t[6] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[1] == 'X' || t[4] == 'X' || t[7] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[2] == 'X' || t[5] == 'X' || t[8] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[0] == 'X' || t[3] == 'X' || t[8] == 'X') {
    cout << "X won" << endl;
    end = true;
}
else if (t[6] == 'X' || t[4] == 'X' || t[2] == 'X') {
    cout << "X won" << endl;
    end = true;
}



if (t[0] == 'O' || t[1] == 'O' || t[2] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[3] == 'O' || t[4] == 'O' || t[5] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[6] == 'O' || t[7] == 'O' || t[8] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[0] == 'O' || t[3] == 'O' || t[6] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[1] == 'O' || t[4] == 'O' || t[7] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[2] == 'O' || t[5] == 'O' || t[8] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[0] == 'O' || t[3] == 'O' || t[8] == 'O') {
    cout << "O won" << endl;
    end = true;

}
else if (t[6] == 'O' || t[4] == 'O' || t[2] == 'O') {
    cout << "O won" << endl;
    end = true;

}

for (int i = 0; i < 9; i++) {
    if (t[i] != 'X' && t[i] != 'O') {

        break;
    }
}

if (equal == false) {
    cout << "draw";
    end = true;
}
}

最佳答案

这里有几个问题:

void WriteTable(char t[]);

此函数已声明但从未定义。您打算如何使用它?

void check(char t[], bool end);

和:

void check(int t[], bool end) {

这些签名与您匹配吗?现在问题应该很明显了。

关于c++:井字游戏中的LNK2019和1120错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329654/

相关文章:

c++ - Xcode 4 中的 boost::asio::ssl 链接错误

c++ - 从 C++ 代码中获取已编译的 glsl 着色器统一参数的大小

c++ - 寻路算法创建循环

c++ - 将一个十六进制拆分为 2 个十六进制值

c++ - `decltype` 作为模板函数声明中模板类型规范的一部分

c++ - 包装一个对象并假装它是一个int

c++ - 这是什么 ?在读取使用 Unicode 编码的文本文件后控制台输出的开头?

c++ - 在源代码中查找函数/变量定义以供引用

c++ - CxxTest 编译,缺少 main

java - 在现在的C++和Java中,double类型和float类型: if (x == 0. 0)是正确的吗?