Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将类输入到我的代码中,并更改为.h文件C++; 我是C++新手,我想知道我是如何捕获代码并更改它的,以便拥有一个类和一个.h文件。_C++_Class - Fatal编程技术网

将类输入到我的代码中,并更改为.h文件C++; 我是C++新手,我想知道我是如何捕获代码并更改它的,以便拥有一个类和一个.h文件。

将类输入到我的代码中,并更改为.h文件C++; 我是C++新手,我想知道我是如何捕获代码并更改它的,以便拥有一个类和一个.h文件。,c++,class,C++,Class,我的代码运行得很好,但我真的需要将它分开,我不知道在.h文件中放什么,在.cpp文件中保留什么 这是我的密码: #include <iostream> using namespace std; int main() { // variáveis da tabela char cSquare1('Q'); char cSquare2('W'); char cSquare3('E'); char cSquare4('A'); char c

我的代码运行得很好,但我真的需要将它分开,我不知道在.h文件中放什么,在.cpp文件中保留什么

这是我的密码:

#include <iostream>
using namespace std;

int main() {
    // variáveis da tabela
    char cSquare1('Q');
    char cSquare2('W');
    char cSquare3('E');
    char cSquare4('A');
    char cSquare5('S');
    char cSquare6('D');
    char cSquare7('Z');
    char cSquare8('X');
    char cSquare9('C');
    int iPlayerTurn(1);
    bool bGameOver(true);
    int placar1(0);
    int placar2(0);


    // Titulo
    cout << "JOGO DO GALO" << endl;
    // Jogo

    do {

        // Imprime tabela
        cout << cSquare1 << "|" << cSquare2 << "|" << cSquare3 << endl;
        cout << "-----"<< endl;
        cout << cSquare4 << "|" << cSquare5 << "|" << cSquare6 << endl;
        cout << "-----"<< endl;
        cout << cSquare7 << "|" << cSquare8 << "|" << cSquare9 << endl;

        // O jogador 1 usa x; O jogador 2 usa 0;
        char cPlayerMark;
        if (iPlayerTurn == 1) {
            cPlayerMark = 'x'; //Este x deve ser minúsculo pois se for maísculo entra em conflito com o valor da tabela
        } else {
            cPlayerMark = '0';
        }

        // Jogada nova
        cout << "Vez do jogador " << iPlayerTurn << endl;
        bool bValidMove;
        // Loop até ter uma jogada válida
        do {
            char cNextMove;
            cin >> cNextMove;
            bValidMove = true;

            // Verifica se é uma jogada válida
            if (cNextMove == 'Q' && cSquare1 == 'Q') {
                cSquare1 = cPlayerMark;
            } else if (cNextMove == 'W' && cSquare2 == 'W') {
                cSquare2 = cPlayerMark;
            } else if (cNextMove == 'E' && cSquare3 == 'E') {
                cSquare3 = cPlayerMark;
            } else if (cNextMove == 'A' && cSquare4 == 'A') {
                cSquare4 = cPlayerMark;
            } else if (cNextMove == 'S' && cSquare5 == 'S') {
                cSquare5 = cPlayerMark;
            } else if (cNextMove == 'D' && cSquare6 == 'D') {
                cSquare6 = cPlayerMark;
            } else if (cNextMove == 'Z' && cSquare7 == 'Z') {
                cSquare7 = cPlayerMark;
            } else if (cNextMove == 'X' && cSquare8 == 'X') {
                cSquare8 = cPlayerMark;
            } else if (cNextMove == 'C' && cSquare9 == 'C') {
                cSquare9 = cPlayerMark;
            } else {
                cout << "Jogada Inválida. Tentar de novo." << endl;
                bValidMove = false;
            }
        } while (!bValidMove);

        bGameOver       = false;
        bool bWinGame   = true;

        // Verifica se o jogo chegou ao fim
        if (cSquare1 != 'Q') {
            if (cSquare2 == cSquare1 && cSquare3 == cSquare1) {
                bGameOver = true;
            }
            if (cSquare4 == cSquare1 && cSquare7 == cSquare1) {
                bGameOver = true;
            }
        }
        if (cSquare5 != 'S') {
            if (cSquare1 == cSquare5 && cSquare9 == cSquare5) {
                bGameOver = true;
            }
            if (cSquare2 == cSquare5 && cSquare8 == cSquare5) {
                bGameOver = true;
            }
            if (cSquare4 == cSquare5 && cSquare6 == cSquare5) {
                bGameOver = true;
            }
            if (cSquare3 == cSquare5 && cSquare7 == cSquare5) {
                bGameOver = true;
            }
        }
        if (cSquare9 != 'C') {
            if (cSquare3 == cSquare9 && cSquare6 == cSquare9) {
                bGameOver = true;
            }
            if (cSquare7 == cSquare9 && cSquare8 == cSquare9) {
                bGameOver = true;
            }
        }
        // Verifica se foi um empate
        if (cSquare1 != 'Q' && cSquare2 != 'W' && cSquare3 != 'E' &&
            cSquare4 != 'A' && cSquare5 != 'S' && cSquare6 != 'D' &&
            cSquare7 != 'Z' && cSquare8 != 'X' && cSquare9 != 'C' && !bGameOver)
        {
            bGameOver = true;
            bWinGame = false;
        }

        if (bGameOver) {

            // Imprime tabela final
            cout << cSquare1 << "|" << cSquare2 << "|" << cSquare3 << endl;
            cout << "-+-+-"<< endl;
            cout << cSquare4 << "|" << cSquare5 << "|" << cSquare6 << endl;
            cout << "-+-+-"<< endl;
            cout << cSquare7 << "|" << cSquare8 << "|" << cSquare9 << endl;

            if (bWinGame) {
                cout << "O jogador " << iPlayerTurn << " venceu!" << endl;
                // Incrementa as vitórias no placar
                if(iPlayerTurn == 1){
                    placar1++;

                } else if(iPlayerTurn == 2){
                    placar2++;
                }
            }

            else {
                cout << "Houve um empate!" << endl;
            }

            cout << "Fim do jogo!" << endl;
            cout << "Jogar de novo? (S/N)?" << endl;
            char cPlayAgain;
            cin >> cPlayAgain;

            if (cPlayAgain == 'S') {
                bGameOver = false;
                // Limpa a tabela - volta aos valores iniciais
                cSquare1 = 'Q';
                cSquare2 = 'W';
                cSquare3 = 'E';
                cSquare4 = 'A';
                cSquare5 = 'S';
                cSquare6 = 'D';
                cSquare7 = 'Z';
                cSquare8 = 'X';
                cSquare9 = 'C';
            }
            else if (cPlayAgain == 'N') {
                bGameOver = true;
                // Mostra o sumário dos resultados
                cout << "Sumário dos resultados:" << endl;
                cout << "Jogador 1: " << placar1 << endl;
                cout << "Jogador 2: " << placar2 << endl;
            }

            iPlayerTurn = 1;
        } else {
            // Vez dos jogadores
            if (iPlayerTurn == 1) {
                iPlayerTurn = 2;
            } else {
                iPlayerTurn = 1;
            }
        }
    } while (!bGameOver);
}
#包括
使用名称空间std;
int main(){
//塔贝拉庄园酒店
字符cSquare1('Q');
char cSquare2('W');
char cSquare3('E');
字符cSquare4('A');
字符cSquare5('S');
char cSquare6('D');
字符cSquare7('Z');
字符cSquare8('X');
char cSquare9('C');
int iPlayerTurn(1);
bool-bGameOver(真);
国际公告牌1(0);
int placar2(0);
//提特罗

C++中的CUT

,如果有一个类,则在头文件中留下类(私有成员,可能是构造函数(S)和析构函数)和方法的原型,并将方法的定义放在单独的.CPP文件中(不要忘记将头包含在.CPP文件中)。 但是你没有类,实际上,你只有

main()
。。。 也许你可以尝试使用函数来完成你现在在
main()
中正在做的事情——例如,检查是否进行了有效的移动或者游戏是否结束(原型在.h中,定义在.cpp中),并在需要时调用它们


如果你不想让你的代码更面向对象并编写类和方法,我真的不认为模块化有多大意义;如果你这样做了,上面的答案解释了你将如何很好地做到这一点:)

如果你真的需要将你的程序分解成类,下面是一些建议:

板级
这个类管理板,包括移动块、初始化和显示

玩家等级
这将代表一个参与者以及董事会、I/O和其他参与者之间的交互

游戏引擎类
这个类提供了玩家、棋盘和其他资源(如屏幕或窗口)之间的“粘合剂”

您的程序足够小,可以轻松地将功能提取到类(对象)中


如果没有类,我只会在程序太长并且可以拆分为可识别的主题时才将其拆分。只有在不需要经常更改的情况下,主题或主程序才应该保证重构,或者隔离一个或多个部分以保护其他部分不受更改。

因为您的代码中没有任何结构或过程e、 没有任何东西可以放入*.h“catch”代码中?但实际上,如果这是整个代码,就没有任何东西可以分开(所有代码都在
main
)。分离代码的好处是创建小函数和/或类来完成工作,而
main
只使用这些函数和/或类。然后,担心放入多个文件是有意义的。首先……将其分解为方法(函数)。找到看起来像逻辑单元(或更好的可重用单元)的东西然后把它们放在main()之外。一旦你这样做了,你就可以开始考虑将一些东西移到一个标题中,这可能对另一个模块有用。众所周知,PS游戏循环很难划分。