uses
CRT;
const
MHOrO_TEKCTOB = 15;
nPOPEXA = nil;
type
A_KTO_EBO_3HAET = (HO_KTO_TO_BEgb_3HAET, BCE_ETO_BECbMA_CTPAHHO);
HyMEP = Byte;
CTPOKA = String[15];
TEKCTuK = record
OHA: CTPOKA;
TOPMO3: HyMEP;
end;
TAM_ABTOMAT = ^ABTOMAT;
ABTOMAT = object
MOE_X, MOE_Y: HyMEP;
TEKCTOB_BCEBO: HyMEP;
TEKCTbl: array[1..MHOrO_TEKCTOB] of TEKCTuK;
KAKOE: HyMEP;
TOPMO3uM: HyMEP;
XPEH_EMy: TAM_ABTOMAT;
constructor BOT_EBOHOE_MECTO(X, Y: HyMEP);
procedure BOH_ETOT_XPEH
(KOMy_XPEH: TAM_ABTOMAT);
procedure ETO_CTPOKA(OHA_CAMA: CTPOKA;
EE_TOPMO3: HyMEP);
procedure BblBOg;
end;
XMblPb = object
HE_KACEKOB: A_KTO_EBO_3HAET;
KTO_TAM_CAMOE_TAKOE: TAM_ABTOMAT;
constructor Hy_HuKAK_MHE_EBO_HE_HA3BATb;
procedure B_nyTb;
procedure u_EBO_TO3E
(uMEHHO_ETO_MOXHATOE_OHO_CAMOE: TAM_ABTOMAT);
end;
procedure BAM_TEMHO;
begin
ClrScr;
end;
procedure TOPMO3HyTb(CKOKO: HyMEP);
begin
Delay(CKOKO);
end;
procedure rge_EMy_KBACuTb(EBO_X, EBO_Y: HyMEP);
begin
GoToXY(EBO_X, EBO_Y);
end;
function WyXEP: Boolean;
begin
WyXEP := KeyPressed;
end;
constructor ABTOMAT.BOT_EBOHOE_MECTO(X, Y: HyMEP);
begin
MOE_X:= X;
MOE_Y:= Y;
TEKCTOB_BCEBO:= 0;
KAKOE:= 0;
TOPMO3uM:= 0;
end;
procedure ABTOMAT.BOH_ETOT_XPEH(KOMy_XPEH: TAM_ABTOMAT);
begin
XPEH_EMy:= KOMy_XPEH;
end;
procedure ABTOMAT.ETO_CTPOKA(OHA_CAMA: CTPOKA; EE_TOPMO3: HyMEP);
begin
if TEKCTOB_BCEBO < MHOrO_TEKCTOB then begin
Inc(TEKCTOB_BCEBO);
with TEKCTbl[TEKCTOB_BCEBO] do begin
OHA:= OHA_CAMA;
TOPMO3:= EE_TOPMO3;
end;
end;
end;
procedure ABTOMAT.BblBOg;
begin
if TEKCTOB_BCEBO> 0 then begin
if TOPMO3uM = 0 then begin
Inc(KAKOE);
if KAKOE> TEKCTOB_BCEBO then KAKOE:= 1;
rge_EMy_KBACuTb(MOE_X, MOE_Y);
with TEKCTbl[KAKOE] do begin
Write(OHA);
TOPMO3uM:= TOPMO3;
end;
end;
Dec(TOPMO3uM);
end;
end;
constructor XMblPb.Hy_HuKAK_MHE_EBO_HE_HA3BATb;
begin
KTO_TAM_CAMOE_TAKOE:= nPOPEXA;
HE_KACEKOB:= BCE_ETO_BECbMA_CTPAHHO;
end;
procedure XMblPb.u_EBO_TO3E
(uMEHHO_ETO_MOXHATOE_OHO_CAMOE: TAM_ABTOMAT);
begin
if KTO_TAM_CAMOE_TAKOE = nPOPEXA then begin
KTO_TAM_CAMOE_TAKOE:= uMEHHO_ETO_MOXHATOE_OHO_CAMOE;
uMEHHO_ETO_MOXHATOE_OHO_CAMOE^.XPEH_EMy:= uMEHHO_ETO_MOXHATOE_OHO_CAMOE;
end
else begin
uMEHHO_ETO_MOXHATOE_OHO_CAMOE^.XPEH_EMy:= KTO_TAM_CAMOE_TAKOE^.XPEH_EMy;
KTO_TAM_CAMOE_TAKOE^.XPEH_EMy:= uMEHHO_ETO_MOXHATOE_OHO_CAMOE;
end;
end;
procedure XMblPb.B_nyTb;
var
ETOT_PAXuT: TAM_ABTOMAT;
begin
ETOT_PAXuT:= KTO_TAM_CAMOE_TAKOE;
while not WyXEP do
with ETOT_PAXuT^ do begin
BblBOg;
ETOT_PAXuT:= XPEH_EMy;
rge_EMy_KBACuTb(1, 10);
TOPMO3HyTb(10);
end;
end;
procedure BAM_XOPOWO;
begin
BAM_TEMHO;
WriteLN('OH TOPMO3 v1.0 Copyright The Future Hackers, 1993');
WriteLN(' Written by Kirill Shirokov and Dmitry Moskovich, May 93');
WriteLN;
end;
var
EBO_3EHKu,
EBO_HOC,
EBO_POT,
EBO_XBOCT: ABTOMAT;
KACEKOB: XMblPb;
begin
with KACEKOB do begin
Hy_HuKAK_MHE_EBO_HE_HA3BATb;
with EBO_3EHKu do begin
BOT_EBOHOE_MECTO(1, 1);
ETO_CTPOKA('- -', 20);
ETO_CTPOKA('o o', 3);
ETO_CTPOKA('O O', 16);
ETO_CTPOKA('0 0', 23);
ETO_CTPOKA('O O', 14);
ETO_CTPOKA('o o', 5);
end;
u_EBO_TO3E(@EBO_3EHKu);
with EBO_HOC do begin
BOT_EBOHOE_MECTO(1, 2);
ETO_CTPOKA('..', 21);
ETO_CTPOKA(' oo ', 16);
end;
u_EBO_TO3E(@EBO_HOC);
with EBO_POT do begin
BOT_EBOHOE_MECTO(1, 3);
ETO_CTPOKA(' -- ', 22);
ETO_CTPOKA(' == ', 4);
ETO_CTPOKA('-==-', 6);
ETO_CTPOKA('/--\', 19);
ETO_CTPOKA('-!! -', 16);
ETO_CTPOKA('\==/', 21);
ETO_CTPOKA('-!! -', 3);
end;
u_EBO_TO3E(@EBO_POT);
BAM_TEMHO;
B_nyTb;
BAM_XOPOWO;
end;
end.