2016-07-19 6 views
-1
int move_player() { 
    if (GetAsyncKeyState(VK_RIGHT) && current_x<max_x) { 
     int old_x = current_x; 
     int new_x = current_x+1; 
     path[old_x] = '_'; 
     path[new_x] = player; 
     system("cls"); 
     cout << endl; 
     for (int a=0; a <= 9; a++) { 
      cout << path[a]; 
     } 
    } else if (GetAsyncKeyState(VK_LEFT) && current_x>min_x) { 
     int old_x = current_x; 
     int new_x = current_x-1; 
     path[old_x] = '_'; 
     path[new_x]=player; 
     system("cls"); 
     cout << endl; 
     for (int b = 0; b <= 9; b++) { 
      cout << path[b]; 
     } 
    } 
    return current_x; 
} 

Основная часть кода - это просто перемещение объекта (только справа или слева). Он начинается с отображения объекта в левом углу, а затем я могу переместить его вправо один раз, но после того, как он просто ничего не делает, когда я нажимаю правую или левую клавишу. Как я могу это решить?Ошибка при отображении массива

+3

Вы никогда не изменяете 'current_x' в любом месте? –

ответ

0

Как его решить?

Вы должны будете использовать while петлю вокруг if-else блока.

или

вызова move_player в while петле в вызывающей функции.

+0

Это то, что я сделал, но он все еще не работает. –

+0

внутри main: 'while (true) {current_x = movePlayer(); } '? Нет? –

+0

@TimStraubinger, для этой работы значение, возвращаемое с 'move_player', должно быть' new_x'. Это может быть источником проблемы. –

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