2010-08-01 4 views
2

저는 C++에서 게임을하고 있어요. 배열에 문제가 있습니다. 항상 포인트 (빈 부분)가있는 '책상'을 보여줍니다. 필요 의견은 코드에 있습니다배열 작업

void showDesk(int someArray[][3]) 
{ 
    for(int i = 0; i < 3 ;i++) 
    { 
     for (int j = 0; j < 3; j++) 
     { 
      if(someArray [i][j] == 0)  cout << "."; 
      else if (someArray[i][j] == 1) cout << "x"; 
      else if (someArray[i][j] == 2) cout << "o"; 
     } 
     cout<<"\n"; 
    } 
} 

void newDesk (int someArray[][3]) 
{ 
    for (int i = 0; i < 3; i++) 
     for (int j = 0; j < 3; j++) 
      someArray [i][j] = 0; 
} 

bool empty(int someArray[][3], int x, int y) 
{ 
    if (someArray[x][y] == 0) 
     return true;  // It returns true 
    else 
     return false; 
} 

void setMark(int someArray[][3],int x,int y,int mark) 
{ 
    if (empty(someArray,x,y)) 
     someArray [x][y] == mark; // But this never calls! 
} 

int main(int argc, char** argv) { 
    int x,y; 
    int mark; 

    int someArray [3][3]; 

    newDesk(someArray); 
    showDesk(someArray); 
    cout << "------------------\n"; 

    while (true) 
    { 
     cout<< "put x,y\n"; 
     cin >> x>>y; 

     cout << "put mark\n"; 
     cin >> mark; 

     setMark(someArray,x,y,mark); 
     showDesk(someArray); 
    } 
     return 0; 
} 
+0

당신이 표준 : : 벡터 '사용하지 않는 이유가 있나요 '또는 배열을 포함하는 구조체를 사용하면보다 쉽게 ​​치수를 추적 할 수 있습니다. –

+0

@ james-mcnellis 그것은 단지 C++ 배열을 학습하고 있습니다;) – Ockonal

+1

Ok; 나는 단지 확신하고 싶었다. –

답변

6

== 비교입니다, =이 과제이다.

귀하의 라인 :

someArray [x][y] == mark; 

는 아무것도 실행하지 않습니다. 그것은해야한다 :

someArray [x][y] = mark; 
+0

Ohh ... 나는 잠시 동안 잠을 자야한다 :) 고마워. – Ockonal

+1

@Ockonal : 이것은 100 % 익숙해지기 전에 C++에서 매우 일반적인 버그 소스이며, 심지어 때로는 발생합니다. 언어의 또 다른 털이 포인트. –

0

someArray [x][y] == mark가 동일한 표시 있는지 확인하기 위해 배열을 테스트, 그러나 결코 실제로 아무것도로 설정 ...