2013-03-11 1 views
0

C++ Tic-Tac-Toe 게임을 만들려고하고 있지만 문자 배열 (보드 자체)을 수정하면 배치 된 행에 두 개의 문자가 만들어집니다 다음 행의 첫 번째 요소에서 아래 코드는 사용자 입력을 수집하여 게시판에 배치하는 코드입니다.C++에서 루프를 사용하여 문자 배열 만들기

void changeBoard(int position) 
{ 
int row = position/3; 
int column = position - (row*3); 
if((player == 1 & run == 1) || (player == 0 && run == 0)) 
    Board[row][column] = 'X'; 
else 
    Board[row][column] = 'O'; 
} 

void displayBoard() 
{ 
int i; 
int z; 
    for(i=0;i<3;i++) 
    { 
    cout << "\n\n"; 
    for(z=0;z<3;z++) 
    { 
     cout << "||" << " " << Board[i][z] << " "; 
     if(z == 2) 
      cout << "||"; 
    } 
} 
cout << "\n"; 
} 

나머지 코드는 생략했습니다. 그러나 사용자가 위치 3 (첫 번째 행의 마지막 요소)을 입력하면 거기에 기호가 생기고 다음 행의 첫 번째 요소에 부호가 생깁니다.

왜 이렇게했는지에 대한 도움이나 설명이 필요하십니까?

+3

"만약 ((플레이어 == 1 실행 == 1) || (플레이어 == 0 && 실행 == 0))"- 아마도 그 첫 번째 '&' 해야한다 '&&' ..... ? –

+0

@roger_rowland 제 부분은 그것이 효과가 없을 것이라고 생각합니다. – 0x499602D2

+0

@David - OP가 그것을 변경하고 다시 시도해야한다고 생각하는 부분은 그것에 대해 생각하는 것보다 빠릅니다 ;-) –

답변

0

열을 찾으려면 modulo (%)을 사용하고 3을 보드의 오른쪽 위 모서리로 만들려면 positon에서 1을 빼십시오.

자바 스크립트 예 : http://jsfiddle.net/howderek/nPMvz/

void changeBoard(int position) 
{ 
position--; 
int row = position/3; 
int column = position % 3; 
if((player == 1 & run == 1) || (player == 0 && run == 0)) 
    Board[row][column] = 'X'; 
else 
    Board[row][column] = 'O'; 
} 

void displayBoard() 
{ 
int i; 
int z; 
    for(i=0;i<3;i++) 
    { 
    cout << "\n\n"; 
    for(z=0;z<3;z++) 
    { 
     cout << "||" << " " << Board[i][z] << " "; 
     if(z == 2) 
      cout << "||"; 
    } 
} 
cout << "\n"; 
} 
+0

보낼 수 있습니까? 당신이 내 코드를 정확히 볼 수 있도록 내 코드? 맨 위에 말했듯이, 3 위치에 두는 것은 어떤 이유로 2 곳에서 X를 만듭니다. – user2157177

+0

예. http://pastebin.com을 추가하십시오./모든 코드와 연결 – howderek

+0

http://pastebin.com/UNF9uS1F – user2157177

관련 문제