function checkMove(key1:char):boolean; begin if key1=#0 then begin case key1 of chr(75): begin if pile[pacY][pacX-1].isitwall=false then checkmove:=true else checkmove:=false; end; chr(77): begin if pile[pacY][pacX+1].isitwall=false then checkmove:=true else checkmove:=false; end; chr(72): begin if pile[pacY-1][pacX].isitwall=false then checkmove:=true else checkmove:=false; end; chr(80): begin if pile[pacY+1][pacX].isitwall=false then checkmove:=true else checkmove:=false; end; end; end; end; function readInput():char; begin if keypressed then key:=readkey; begin if key=#0 then begin if checkmove(key)=true then key:=readkey else key:=previouskey; end; case key of chr(75): begin if pile[pacY][pacX-1].isitwall=false then begin readInput:='a'; // lewo pacX:=pacX-1; end; end; chr(77): begin if pile[pacY][pacX+1].isitwall=false then begin readInput:='d'; pacX:=pacX+1; // prawo end else readinput:=previouskey; end; chr(72): begin if pile[pacY-1][pacX].isitwall=false then begin readInput:='w'; //gora pacY:=pacY-1; end; end; chr(80): begin if pile[pacY+1][pacX].isitwall=false then begin readInput:='s'; //dol pacY:=pacY+1; end; end; end; end; writeln(key,' ',previouskey); previouskey:=key; end;