92 lines
1.9 KiB
ObjectPascal
92 lines
1.9 KiB
ObjectPascal
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);
|
|
{DEBUG}
|
|
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;
|
|
{DEBUG}
|
|
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.
|