2016-11-10 42 views
-3

挣扎我是比较新的编码和一直负责创建C++中的井字游戏,我以为我把所有的代码完成,但也有各种问题,如用户输入没有被允许,只允许输入一个玩家的姓名而不是两个,任何帮助/建议你可以给我如何使这项工作将非常感激。与井字C++

#include <iostream> 
using namespace std; 
int menumain; 
int oneplayer = 'X'; 

char square1('1'); 
char square2('2'); 
char square3('3'); 
char square4('4'); 
char square5('5'); 
char square6('6'); 
char square7('7'); 
char square8('8'); 
char square9('9'); 

void toggleplayers() { 
    if (oneplayer == 'X') 
    oneplayer = 'O'; 
    else 
    oneplayer = 'X'; 
} 

char win() 

{ 
    if (square1 == 'X' && square2 == 'X' && square3 == 'X') return 'X'; 
    if (square4 == 'X' && square5 == 'X' && square6 == 'X') return 'X'; 
    if (square7 == 'X' && square8 == 'X' && square9 == 'X') return 'X'; 
    if (square1 == 'X' && square5 == 'X' && square9 == 'X') return 'X'; 
    if (square3 == 'X' && square5 == 'X' && square7 == 'X') return 'X'; 
    if (square3 == 'X' && square6 == 'X' && square9 == 'X') return 'X'; 
    if (square1 == 'X' && square4 == 'X' && square7 == 'X') return 'X'; 
    if (square2 == 'X' && square5 == 'X' && square8 == 'X') return 'X'; 
    if (square1 == 'O' && square2 == 'O' && square3 == 'O') return 'O'; 
    if (square4 == 'O' && square5 == 'O' && square6 == 'O') return 'O'; 
    if (square7 == 'X' && square8 == 'X' && square9 == 'X') return 'X'; 
    if (square1 == 'O' && square5 == 'O' && square9 == 'O') return 'O'; 
    if (square3 == 'O' && square5 == 'O' && square7 == 'O') return 'O'; 
    if (square3 == 'O' && square6 == 'O' && square9 == 'O') return 'O'; 
    if (square1 == 'O' && square4 == 'O' && square7 == 'O') return 'O'; 
    if (square2 == 'O' && square5 == 'O' && square8 == 'O') return 'O'; 
    return '/'; 
} 

int main() { 
    int playerone, playertwo; 
    system("cls"); 

    cout << "tic tac toe" << endl; 
    cout << "-----------" << endl; 
    cout << "Start game (1)" << endl; 
    cout << "Quit game (2)" << endl; 

    cout << "Press 1 or 2 to proceed." << endl; 
    cin >> menumain; 
    if (menumain == 2) 

    { 
    return 0; 
    } else { 
    cout << "Player One, please enter your name: " << endl; 
    cin >> playerone; 
    system("cls"); 

    cout << "Player Two, please enter your name: " << endl; 
    cin >> playertwo; 
    system("cls"); 

    int playermove; 
    cout << "Choose a number between 1-9 to place!" << endl; 
    cin >> playermove; 

    if (playermove == 1) 
     square1 = oneplayer; 
    else if (playermove == 2) 
     square2 = oneplayer; 
    else if (playermove == 3) 
     square3 = oneplayer; 
    else if (playermove == 4) 
     square4 = oneplayer; 
    else if (playermove == 5) 
     square5 = oneplayer; 
    else if (playermove == 6) 
     square6 = oneplayer; 
    else if (playermove == 7) 
     square7 = oneplayer; 
    else if (playermove == 8) 
     square8 = oneplayer; 
    else if (playermove == 9) 
     square9 = oneplayer; 

    cout << "Tic tac toe!" << endl; 

    cout << "------------" << endl; 

    cout << " " << square1 << " | " << square2 << " | " << square3 << " " 
     << endl; 

    cout << " " << square4 << " | " << square5 << " | " << square6 << " " 
     << endl; 

    cout << " " << square7 << " | " << square8 << " | " << square9 << " " 
     << endl; 

    cout << " " << endl; 
    cout << playerone << endl; 
    cout << playertwo << endl; 

    while (1) { 
     if (win() == 'X') { 
     cout << playerone << " wins!" << endl; 
     break; 
     } 
     else if (win() == 'O') { 
     cout << playertwo << " wins!" << endl; 
     break; 
     } 
     toggleplayers(); 
    } 

    system("pause"); 
    return 0; 
    } 
} 
+0

** '用户输入没有被允许' **?无论您是否允许,您都可以使用它 –

+0

您可以通过在板上使用2维数组来简化和缩短代码。 –

+0

你写过你的代码的方式,你很幸运,tic-tac-toe只是一个3 x 3的板子。如果您的代码是10 x 10,您的代码会是什么样子?确定代码中的模式,看看是否有一种方法可以推广 - 二维矩阵的建议只是缩短代码的一个步骤。 – PaulMcKenzie

回答

0

我做了一个快速修复。复制,粘贴,编译和测试。它将在游戏方面完成这项工作。有用。这是tic tac脚趾。 :d。祝你好运,进一步调整。

这些}; }; };只是我自己的标记,因为我在文本编辑器中编辑了它,而不是IDE。我的建议是为Draw添加一个条款。因为如果没有赢家,它不会做任何事情。

#include <iostream> 
    using namespace std; 
    int menumain; 
    int oneplayer = 'X'; 


    char square1('1'); 
    char square2('2'); 
    char square3('3'); 
    char square4('4'); 
    char square5('5'); 
    char square6('6'); 
    char square7('7'); 
    char square8('8'); 
    char square9('9'); 

    void toggleplayers() 
    { 
    if (oneplayer == 'X') 
    oneplayer = 'O'; 
    else 
    oneplayer = 'X'; 
    }; 

    char win() 
    { 
    if (square1 == 'X' && square2 == 'X' &&square3 == 'X') 
    return 'X'; 
    if (square4 == 'X' && square5 == 'X' &&square6 == 'X') 
    return 'X'; 

    if (square7 == 'X' && square8 == 'X' &&square9 == 'X') 
    return 'X'; 

    if (square1 == 'X' && square5 == 'X' && square9 == 'X') 
    return 'X'; 
    if (square3 == 'X' && square5 == 'X' &&square7 == 'X') 
    return 'X'; 

    if (square3 == 'X' && square6 == 'X' &&square9 == 'X') 
    return 'X'; 
    if (square1 == 'X' && square4 == 'X' &&square7 == 'X') 
    return 'X'; 

    if (square2 == 'X' && square5 == 'X' &&square8 == 'X') 
    return 'X'; 

    if (square1 == 'O' && square2 == 'O' &&square3 == 'O') 
    return 'O'; 
    if (square4 == 'O' && square5 == 'O' &&square6 == 'O') 
    return 'O'; 

    if (square7 == 'X' && square8 == 'X' &&square9 == 'X') 
    return 'X'; 

    if (square1 == 'O' && square5 == 'O' && square9 == 'O') 
    return 'O'; 
    if (square3 == 'O' && square5 == 'O' &&square7 == 'O') 
    return 'O'; 

    if (square3 == 'O' && square6 == 'O' &&square9 == 'O') 
    return 'O'; 
    if (square1 == 'O' && square4 == 'O' &&square7 == 'O') 
    return 'O'; 

    if (square2 == 'O' && square5 == 'O' &&square8 == 'O') 
    return 'O'; 

    return '/'; 
    }; 

    int main() 
    { 
    int playerone, playertwo; 


    cout << "tic tac toe" << endl; 
    cout << "-----------" << endl; 
    cout << "Start game (1)" << endl; 
    cout << "Quit game (2)" << endl; 

    cout << "Press 1 or 2 to proceed." << endl; 
    cin >> menumain; 
    if (menumain == 2) 

    { 
    return 0; 
    } 
    else 
    { 

    cout << "Player One, please enter your name: " << endl; 
    // cin >> playerone; create char array or string and ask for an input; 


    cout << "Player Two, please enter your name: " << endl; 
    // cin >> playertwo; create char array or string and ask for an input; 


    cout << "Tic tac toe!" << endl; 

    cout << "------------" << endl; 

    cout << " " << square1 << " | " << square2 << " | " << square3 << " " << endl; 

    cout << " " << square4 << " | " << square5 << " | " << square6 << " " << endl; 

    cout << " " << square7 << " | " << square8 << " | " << square9 << " " <<  endl; 

    cout << " " << endl; 
    cout << playerone << endl; //here replace playerone with char array variable or string; 
    cout << playertwo << endl; //here replace playerone with char array variable or string; 








    while(1) 
    { 


    int playermove; 
    cout << "Choose a number between 1-9 to place!" << endl; 
    cin >> playermove; 

    if (playermove == 1) 
    square1 = oneplayer; 

    else if (playermove == 2) 
    square2 = oneplayer; 
    else if (playermove == 3) 
    square3 = oneplayer; 

    else if (playermove == 4) 
    square4 = oneplayer; 
    else if (playermove == 5) 
    square5 = oneplayer; 
    else if (playermove == 6) 
    square6 = oneplayer; 

    else if (playermove == 7) 
    square7 = oneplayer; 
    else if (playermove == 8) 
    square8 = oneplayer; 
    else if (playermove == 9) 
    square9 = oneplayer; 

    cout << "Tic tac toe!" << endl; 

    cout << "------------" << endl; 

    cout << " " << square1 << " | " << square2 << " | " << square3 << " " << endl; 

    cout << " " << square4 << " | " << square5 << " | " << square6 << " " << endl; 

    cout << " " << square7 << " | " << square8 << " | " << square9 << " " <<  endl; 

    cout << " " << endl; 
    cout << playerone << endl; 
    cout << playertwo << endl; 





    if (win() == 'X') 
    { 

    cout << playerone << " wins!" << endl; 
     break; 
    } 

    else if (win() == 'O') 
    { 

    cout << playertwo << " wins!" << endl; 
     break; 

    }; 
    toggleplayers(); 
    }; 



    return 0; 
    }; 


    }; 
0

您的代码有很多问题。

用户输入没有被允许

其实你一开始而非事后获取用户输入,

切换播放机后,需要提示玩家为自己的举动:

toggleplayers(); 
cout << "Player " << oneplayer << ", enter your move (1 - 9): "; 
cout.flush(); 
cin >> playermove;