2016-07-26 8 views
-1

초보자 인 C++에서 기본적인 Tic Tac Toe 게임을하고 있습니다.하지만이 함수는 엉망인 것으로 보이는 것을 인쇄합니다. 이상한 문자가있는 화면 또는 엉망인 버전. 코드 :C++ 기본 Tic-Tac-Toe 프로그램이 빈 화면을 인쇄합니다.

#include <iostream> 
#include <string> 

void printboard() 
{ 
    std::string array[9] = {"O","O","O","O","O","O","O","O","O"}; 


    std::cout << " |  | " << std::endl; 
    std::cout << " "; std::cout << array[2]; std::cout << " | ";      std::cout << array[4]; std::cout << " | "; std::cout << array[3]; std::cout << " " << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << "----|-----|----" << std::endl; 
    std::cout << " "; std::cout << array[5]; std::cout << " | ";   std::cout << array[1]; std::cout << " | "; std::cout << array[3]; std::cout << " " << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << "----|-----|----" << std::endl; 
    std::cout << " "; std::cout << array[7]; std::cout << " | ";    std::cout << array[9]; std::cout << " | "; std::cout << array[8]; std::cout << " " << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << " |  | " << std::endl; 

은}

+1

'main()'함수는 어디에 있습니까? – lorro

+0

루프. 루프는 코드를 단순화하는 데 도움이됩니다. 간단한 코드는 결함이 적고 디버그하기 쉽습니다. –

+1

배열은 0부터 시작합니다. 'array [9]'가 범위를 벗어납니다. 색인을 조정하면 인쇄가 제대로 표시됩니다. – alvits

답변

0

이 작동하는 것 같다 :

#include <iostream> 
#include <string> 

void printboard() 
{ 
    std::string array[9] = { "O","O","O","O","O","O","O","O","O" }; 

    std::cout << " |  | " << std::endl; 
    std::cout << " "; std::cout << array[2]; std::cout << " | "; std::cout << array[4]; std::cout << " | "; std::cout << array[3]; std::cout << " " << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << "----|-----|----" << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << " "; std::cout << array[5]; std::cout << " | "; std::cout << array[1]; std::cout << " | "; std::cout << array[3]; std::cout << " " << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << "----|-----|----" << std::endl; 
    std::cout << " |  | " << std::endl; 
    std::cout << " "; std::cout << array[7]; std::cout << " | "; std::cout << array[6]; std::cout << " | "; std::cout << array[8]; std::cout << " " << std::endl; 
    std::cout << " |  | " << std::endl; 
} 

int main() 
{ 
    printboard(); 
    std::system("Pause"); 

    return 0; 
} 

내가 원래 코드가 참조하는 것으로 나타났습니다 [9] (아웃 오브 바운드 규모 9의 배열의 그 배열의 마지막 항목은 [8]이 될 것입니다.) 상자를 정렬 할 때 너무 많은 공백을 하나 포함했기 때문에 값이 약간 왜곡되었습니다. 희망이 도움이됩니다.

+0

테스트 해보기. –

+0

당신은 GENIUS입니다! 도와 줘서 고마워! –