Новичок в C++, проблемы с GetAsyncKeyState, думаю, да
Привет, ребята. С тех пор как я закончил свой курс программирования (потому что я слишком молод, чтобы учиться в университете) Я начал экспериментировать и учиться сам, C++ привлек мое внимание.
Я начал несколько месяцев назад и, как всегда, начал экспериментировать. Поэтому я попытался создать простую доску, ограниченную стенами, представленными буквой"#", и символом, представленным буквой"+".
Я начал с создания доски, двумерного массива int board[5][20] и выполнения некоторых циклов for, которые создают доску с 2, представляющими стену, 1, представляющим игрока, 0, представляющим пространство emty.
for(int i=0; i<=4; i++) { for(int x=0; x<=19; x++) { if(i == 0 || i == 4) { board[i][x] = 2; } else { if(x == 0 || x == 19) { board[i][x] = 2; } else { board[i][x] = 0; } } } }
Сейчас это основной цикл с цикл игры, обмен мгновенными сообщениями с помощью Windows.ч - GetAsyncKeyState
вот так, теперь, когда у меня нет никакого наставника или профессора, чтобы проинструктировать меня, я не знаю, как распределить эту функцию, и, возможно, я использую ее непропорционально.
int main() { Board table(3,10); showGame(table); while(!GetAsyncKeyState(VK_ESCAPE)) { showGame(table); if(GetAsyncKeyState(VK_UP)) { table.moveUp(); } if(GetAsyncKeyState(VK_DOWN)) { table.moveDown(); } if(GetAsyncKeyState(VK_RIGHT)) { table.moveRight(); } if(GetAsyncKeyState(VK_LEFT)) { table.moveLeft(); } } return 0; }
Вот функции, которые перемещают игрока:
void Board::moveDown() { int p1 = Y + 1; int move = board[Y][X] + board[p1][X]; if(move == 1) { board[p1][X] = player; board[Y][X] = empty; } } void Board::moveUp() { int p2 = Y - 1; int move = board[Y][X] + board[p2][X]; if(move == 1) { board[p2][X] = player; board[Y][X] = empty; } } void Board::moveRight() { int p3 = X + 1; int move = board[Y][X] + board[Y][p3]; if(move == 1) { board[Y][p3] = player; board[Y][X] = empty; } } void Board::moveLeft() { int p4 = X - 1; int move = board[Y][X] + board[Y][p4]; if(move == 1) { board[Y][p4] = player; board[Y][X] = empty; } }
Он создает доску, отображает ее вместе с игроком. Проблема в том, что он позволяет мне сделать только 1 ход, а затем либо не отображает изменение, либо не делает этого.
И это код, который читает доска:
system("CLS"); for(int i=0;i<=4; i++) { for(int x=0;x<=19; x++) { if(cb.board[i][x] == cb.valueWall()) { cout << "#"; } if(cb.board[i][x] == cb.valueEmpty()) { cout << " "; } if(cb.board[i][x] == cb.valuePlayer()) { cout << "+"; } } cout << "\n"; }
Wes Aday
Моя вина. Его похоронили. Возможно, вы захотите подробнее рассказать о том, в чем на самом деле заключается ваша проблема.
Wes Aday
Что именно происходит, когда вы запускаете его через отладчик? Выходит ли он из главного? Читает ли он клавиатуру?