gh-scrum/src/keys_m.pas

92 lines
1.8 KiB
ObjectPascal
Raw Normal View History

2026-02-28 10:57:08 +00:00
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.