c++
  • tic-tac-toe
  • 2012-02-21 3 views 1 likes 
    1

    안녕하세요 17 저는 자신을 가르치려고 노력합니다. C++. 내 첫 번째 프로젝트 중 하나는 틱택 (tic-tac-toe) 게임을 쓰고 인공 지능을 플레이하려고합니다. 그래서에 문제가 코드 메신저 내가 메시지가 "당신은 X 또는 O를? 싶은가"이tic-tac-toe while 및 ||

    main() { 
    
        char player, computer; 
    
        while (player != 'x' || player != 'o') 
        { 
         cout << "do you want to be x or o?"; 
         cin >> player; 
        }; 
    
        if (player == 'x') computer == 'o'; 
        else computer == 'x'; 
    
        cout << "player is: " << player << endl << "computer is: " << computer ; 
        cout << computer; 
    }; 
    

    이지만, 그때는 X 또는 O를 입력하고이 같은 질문을 반복 유지합니다. while 루프와 관련이 있다고 생각합니다. 어떤 도움을 주셔서 감사합니다.

    +0

    입니까? –

    +0

    경고, 초기화하기 전에 플레이어를 확인하고 있습니다! 사용자가 묻기 전에 플레이어가 임의로 'x'또는 'o'값을 갖게 될 가능성이 있습니다! 변수를 사용하려면 먼저 변수를 초기화해야합니다. – abelenky

    +0

    CodingMastero 이건 아니야, 그게 내게 다가왔다. –

    답변

    6

    루프 종료 조건이 잘못이며, 한 번 요청했습니다 때까지 확인 안 :

    당신은 아마 의미한다.

    do { 
        cout << "do you want to be x or o?"; 
        cin >> player; 
    } while (player != 'x' && player != 'o'); 
    
    +0

    그래, 고마워, 내가 할 동안 생각하고 있었는데, 확실하지 않았다 –

    7
    char player, computer; 
    
    while (player != 'x' || player != 'o') { 
    

    우선 player은 초기화되지 않으므로 임의의 가비지가 포함되어 있습니다. 당신은 그것에서 읽으면 안된다. 최소한 알려진 값으로 초기화하십시오.

    두 번째로, 조건은 항상 true입니다. player'x'이라고 가정합니다. 조건은 player != 'o'입니다.

    while (player != 'x' && player != 'o') { 
    
    +0

    아, 덕분에 지금은 분명해진다.하지만 플레이어를 초기화해야하는 이유는 무엇일까? –

    +0

    여러분의 경우''x' '나''o''가 아닌 초기화 할 수 있습니다 (예 :'char player ='a ';'). 그러나 StilesCrisis와 같은 do-while 루프를 사용하면 더 나은 결과를 얻을 수 있습니다. – jamesdlin

    1

    문제는 조건부입니다. 제 생각에는 while (player != 'x' && player != 'o')입니다. 즉, player이 x 또는 o가 아닌 경우입니다. 이 텍스트 책에서 예를 들어

    +0

    및 플레이어 –

    0
    while ((player == 'x' || player == 'o') == false) 
    
    +0

    '== false'의 초기화? Eww. 이것이'! '연산자의 용도입니다. – jamesdlin

    +1

    부울 식에서 == false를 사용해야하는 이유는 무엇입니까? –

    0
    char player = ' '; // always init variables 
        while (player != 'x' && player != 'o') //exit if false, when player == x or == o 
        { 
         cout << "do you want to be x or o?"; 
         cin >> player; 
        }; 
    
    관련 문제