Возникли проблемы с игрой в лабиринт на языке Си
Я делал игру, чтобы ходить по лабиринтам и решать их для проекта колледжа.
Я пытался заставить своего персонажа двигаться, и, как ни странно, он отлично работал в течение примерно 20 минут с перемещением персонажа и подсчетом шагов. После этого он просто перестал работать, и код остался прежним. Это была проблема с компилятором (DEV C++) или код неисправен?
W, A, S, D предназначены для перемещения, но каждый раз, когда я нажимаю один из них, персонаж не перемещается и просто спамит шаги: 0 для каждого клика.
Что я уже пробовал:
Основная часть (игрок-это символ ascii; ex/ey-координаты входа; sx/sy-координаты конца) :
steps=0; do { do { key=getch(); printf("steps: %d", steps); if(key=='w') { steps+=1; if(*(lab+pointerpoint(ex, ey-2))==track) { system("cls"); *(lab+pointerpoint(ex, ey))=track; *(lab+pointerpoint(ex, ey-2))=player; printlab(); } else { steps-=1; continue; } } if(key=='s') { steps+=1; if(*(lab+pointerpoint(ex, ey+2))==track) { system("cls"); *(lab+pointerpoint(ex, ey))=track; *(lab+pointerpoint(ex, ey+2))=player; printlab(); } else { steps-=1; continue; } } if(key=='a') { steps+=1; if(*(lab+pointerpoint(ex-2, ey))==track) { system("cls"); *(lab+pointerpoint(ex, ey))=track; *(lab+pointerpoint(ex-2, ey))=player; printlab(); } else { steps-=1; continue; } } if(key=='d') { steps+=1; if(*(lab+pointerpoint(ex+1, ey))==track) { system("cls"); *(lab+pointerpoint(ex, ey))=track; *(lab+pointerpoint(ex+2, ey))=player; printlab(); } else { steps-=1; continue; } } } while( *(lab+pointerpoint(ex, ey)) != *(lab+pointerpoint(sx, sy)) ); } while(key!='q'); //The function that generates the maze (N is size): void labgen(int x, int y) { if(N%2==0) N++; sx=N-1; sy=N; maze = (char *)malloc(sizeof(char)*N*N+sizeof(char)); *(maze+pointerpoint(N, N)+1)='\0'; int i=0; for( ; i<N*N ; i++) { *(maze+i)=wall; } *(lab+pointerpoint(ex, ey))=player; *(lab+pointerpoint(ex, ey+1))=track; *(lab+pointerpoint(sx, sy))=track; nextblock(ex, ey+1); } //Functions that deal with points: char point(int x, int y) { if(x<1||y<1||x>N||y>N) return '0'; int point = N*(y-1)+x -1; return *(lab+point); } int pointerpoint(int x, int y) { int point = N*(y-1)+x -1; return point; }