2010-08-01 3 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

Ох ... Я должен спать некоторое время :) Спасибо. – Ockonal

+1

@ Ockonal: Это очень распространенный источник ошибок на C++, прежде чем вы получите 100% к нему, и даже тогда это произойдет иногда. Еще одна волосатая точка в языке. –

0

someArray [x][y] == mark проверяет массив, чтобы увидеть, если его равным маркировать, но фактически никогда не ставит его ни к чему ...

Смежные вопросы