листинги

Кирилл Широков
Program: OH TOPMO3

  Искать
    
 
 

Program: OH TOPMO3, Version: 1.1, Released: 25 May 1993.
Author: Kirill Shirokov [The Future Hackers Co.], CoAuthor: Dmitry Moskovich

This program illustrates visual effect, when english combinations of characters looks like russian text. Original idea was researched by Viacheslav Slavinsky (Some years ago he wrote genius line: KACEKOB - TOPMO3).

Copyright by The Future Hackers Co., 1993 All rights reserved.


program OH_TOPMO3;

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.

Наверх | Раздел | Сначала

Hosted by uCoz