unit keys_m; interface uses crt, creature_m, arena_m, trace_m, hamster_m, debug_m; const SpaceOrd = 32; EscOrd = 27; CtrlCOrd = 3; ArrowLeftOrd = -75; ArrowRightOrd = -77; ArrowDownOrd = -80; ArrowUpOrd = -72; { Debug } BOrd = 98; COrd = 99; LOrd = 108; { Debug } procedure GetKey(var keyCode: integer); procedure HandleKey(var h: creature; var continueLevel: boolean; var a: arena; var t: tracePtr); implementation procedure GetKey(var keyCode: integer); var c: char; begin c := ReadKey; if c = #0 then begin c := ReadKey; keyCode := -ord(c) end else begin keyCode := ord(c) end end; procedure ChangeHamsterDelta(keyCode: integer; var h: creature); begin h.dX := 0; h.dY := 0; case keyCode of ArrowLeftOrd: h.dX := -HamsterDelta; ArrowRightOrd: h.dX := HamsterDelta; ArrowUpOrd: h.dY := -HamsterDelta; ArrowDownOrd: h.dY := HamsterDelta; SpaceOrd: StopCreature(h) end end; procedure HandleKey(var h: creature; var continueLevel: boolean; var a: arena; var t: tracePtr); var keyCode: integer; begin GetKey(keyCode); { if keyCode = BOrd then Print(a.borders); if keyCode = COrd then Print(a.captured); if keyCode = LOrd then begin GotoXY(2, 60); write(' '); GotoXY(2, 60); writeln(GetLength(t)); GotoXY(1, 1) end; } if (keyCode = ArrowLeftOrd) or (keyCode = ArrowRightOrd) or (keyCode = ArrowUpOrd) or (keyCode = ArrowDownOrd) or (keyCode = SpaceOrd) then begin ChangeHamsterDelta(keyCode, h) end; if (keyCode = EscOrd) or (keyCode = CtrlCOrd) then continueLevel := false end; end.