В игре не работает управление с клавиатуры - Free Pascal
Формулировка задачи:
Добрый всем вечер.
Подскажите, пожалуйста, в чем может быть проблема с управлением игрой, написанной в Графе, с клавиатуры?
Отрисовка и генерация происходит вроде нормально, но нет реакции на клавиатуру.
Вот кусочек с считыванием и кейсом:
А вот тот, куда кейс ссылается:
Процедуры, на которые ссылается программа рабочие, дело похоже не в них. До преобразования в граф (переделывала игру из псевдографики) все работало и управлялось стрелками
Листинг программы
- BEGIN
- clrscr;
- driver:=detect;
- InitGraph(driver,mode,'');
- cursoroff;
- randomize;
- setlinestyle(0,0,ThickWidth);
- chet:=0;
- time:=500;
- lvl:=1;
- clearDevice;
- for i:=1 to M do
- for j:=1 to N do
- P[i,j]:=0;
- l:=3;
- stop:=0;
- P[2,2]:=-3;
- P[2,3]:=-2;
- P[2,4]:=-1;
- iz:=2;
- jz:=4;
- dz:=3;
- ch:=#0;
- ramko;
- vyvod;
- geneda;
- repeat
- while keypressed do
- ch:=readkey;
- case ch of
- #72:l:=1;
- #80:l:=3;
- #77:l:=2;
- #75:l:=4;
- #27:stop:=2;
- #43:dz:=dz+1;
- end;
- ch:=#0;
- dvig;
- if pusto=0 then stop:=3;
- vyvod;
- delay(time);
- until stop>0;
- clearDevice;
- settextstyle(3,0,8);
- setcolor(4);
- outtextxy(300,300,'Игра завершена**');
- setcolor(2);
- settextstyle(3,0,5);
- str(chet,sh);
- outtextxy(300,400,'Ваш счет: ');
- outtextxy(550,400,sh);
- readln;
Листинг программы
- if (l=1) and ((iz=1) or (P[iz-1,jz]<0)) then stop:=1;
- if (l=2) and ((jz=n) or (P[iz,jz+1]<0)) then stop:=1;
- if (l=3) and ((iz=m) or (P[iz+1,jz]<0)) then stop:=1;
- if (l=4) and ((jz=1) or (P[iz,jz-1]<0)) then stop:=1;
Решение задачи: «В игре не работает управление с клавиатуры»
textual
Листинг программы
- while keypressed do
- begin
- ch:=readkey;
- if ch=#0 then ch:=readkey;
- end;
- case ch of
- #72:l:=1;
- #80:l:=3;
- #77:l:=2;
- #75:l:=4;
- #27:stop:=2;
- #43:dz:=dz+1;
- end;
- ch:=#0;
- dvig;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д