Как мне двигаться в квадрате и что я делаю не так
привет..может ли кто-нибудь объяснить мне, почему, если я нажимаю кнопку s или кнопку d, это вызывает у меня ошибку сегментации, но с кнопкой и кнопкой w это работает нормально.это просто функция для перемещения игрока p в квадрате так же, как змея.
Что я уже пробовал:
void move(){ int i; int j; char choice; scanf("%s",&choice); for (i = 0; i < rows; ++i) { for (j = 0; j < cols; ++j) { if(maze[i][j] == 'p' && choice == 'a'){ char tmp = maze[i][j]; maze[i][j] = maze[i][j-1]; maze[i][j-1] = tmp; } if(maze[i][j] == 'p' && choice == 'w'){ char tmp = maze[i][j]; maze[i][j] = maze[i-1][j]; maze[i-1][j] = tmp; } if(maze[i][j] == 'p' && choice == 'd'){ char tmp = maze[i][j]; maze[i][j] = maze[i][j+1]; maze[i][j+1] = tmp; } if(maze[i][j] == 'p' && choice == 's'){ char tmp = maze[i][j]; maze[i][j] = maze[i+1][j]; maze[i+1][j] = tmp; } } } }
jeron1
maze[i][j-1] = tmp;
Что произойдет, если j = 0?
Member 14825085
для этого его хорошо, потому что я создаю границу для игрока(так что он не может пойти туда).проблема заключается в d(справа) и s(вниз).
jeron1
Не уверен, что понимаю это, но.....
нечто подобное может произойти и здесь
maze[i+1][j] = tmp;
где [i+1] может быть вне зоны досягаемости.