daily pastebin goal
41%
SHARE
TWEET

Object Pascal - TO DO snake

popelka Mar 24th, 2019 (edited) 56 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program SNAKE;
  2.  
  3. uses crt,graph;
  4.  
  5. const pozadi = black;
  6.  
  7. type POLOHA = packed object
  8.                  private
  9.                     X, Y: integer;
  10.                  public
  11.                      procedure INIT(X1,Y1: integer);
  12.                      function GETX: integer;
  13.                      function GETY: integer;
  14.               end;
  15.  
  16.   BOD = packed object (POLOHA)
  17.               private
  18.                   VIDIT: boolean;
  19.               public
  20.                   constructor INIT(X1,Y1: integer);
  21.                   procedure UKAZ; virtual;
  22.                   procedure SKRYJ; virtual;
  23.                   function JEVIDET: boolean;
  24.                   procedure PRESUN(X1,Y1: integer);
  25.                   procedure POSUN(N: integer); virtual;
  26.                   destructor DONE; virtual;
  27.            end;
  28.  
  29.   HRAC = packed object (BOD)
  30.          private
  31.              a: integer;
  32.          public
  33.              constructor INIT(X1,Y1,A1: integer);
  34.              procedure UKAZ; virtual;
  35.              procedure SKRYJ; virtual;
  36.              procedure ZVETSI(N:integer); virtual;
  37.      end;
  38.  
  39.   JIDLO = packed object (BOD)
  40.       private
  41.           R: integer;
  42.       public
  43.           constructor INIT(X1,Y1,R1: integer);
  44.           procedure UKAZ; virtual;
  45.           procedure SKRYJ; virtual;
  46.       end;
  47.  
  48.   function ZJISTI(out DX,DY: integer): boolean;
  49.     var CO: char;
  50.         VEN: boolean;
  51.     begin DX:=0; DY:=0; ZJISTI:=true;
  52.           repeat CO:=readkey;
  53.                  VEN:=true;
  54.                  case ord(CO) of 72: DY:=-1;
  55.                                  80: DY:=1;
  56.                                  75: DX:=-1;
  57.                                  77: DX:=1;
  58.                                  13: ZJISTI:=false
  59.                                  else VEN:=false
  60.                               end
  61.           until VEN
  62.     end;
  63.  
  64. (***********************************POLOHA*************************************)
  65.  
  66.  
  67.   procedure POLOHA.INIT(X1,Y1: integer);
  68.   begin X:=X1; Y:=Y1 end;
  69.  
  70.   function POLOHA.GETX: integer;
  71.   begin GETX:=X end;
  72.  
  73.   function POLOHA.GETY: integer;
  74.   begin GETY:=Y end;
  75.  
  76. (***********************************BOD****************************************)
  77.  
  78.   constructor BOD.INIT(X1,Y1: integer);
  79.     begin
  80.       POLOHA.INIT(X1,Y1);
  81.       VIDIT:=false
  82.    end;
  83.  
  84.   procedure BOD.UKAZ;
  85. begin VIDIT:=true;
  86.       putpixel(X,Y,getcolor)
  87. end;
  88.  
  89.   procedure BOD.SKRYJ;
  90. begin VIDIT:=false;
  91.       putpixel(X,Y,pozadi)
  92. end;
  93.  
  94.   function BOD.JEVIDET: boolean;
  95. begin JEVIDET:=VIDIT end;
  96.  
  97.   procedure BOD.PRESUN(X1,Y1: integer);
  98. begin SKRYJ;
  99.       POLOHA.INIT(X1,Y1);
  100.       UKAZ
  101. end;
  102.  
  103.   procedure BOD.POSUN(N: integer);
  104. var DX,DY,FX,FY: integer;
  105. begin UKAZ;
  106.       FX:=GETX;
  107.       FY:=GETY;
  108.       while ZJISTI(DX,DY) do begin FX:=FX+DX*N;
  109.                                    FY:=FY+DY*N;
  110.                                    PRESUN(FX,FY)
  111.                              end
  112. end;
  113.  
  114.   destructor BOD.DONE;
  115. begin SKRYJ end;
  116.  
  117. (**********************************HRAC****************************************)
  118.   constructor HRAC.INIT(X1,Y1,A1: integer);
  119.     begin
  120.       BOD.INIT(X1,Y1); A:=A1;
  121. end;
  122.  
  123.   procedure HRAC.UKAZ;
  124.    begin inherited UKAZ;
  125.       graph.setfillstyle(SolidFill,green);
  126.       graph.setcolor(GREEN);
  127.       graph.BAR(X,Y,X+A,Y+A);
  128.       graph.setcolor(white);
  129.       graph.setfillstyle(SolidFill,POZADI);
  130. end;
  131.  
  132.   procedure HRAC.SKRYJ;
  133. var barva: word;
  134. begin barva:=graph.getcolor;
  135.       graph.setcolor(pozadi);
  136.       setfillstyle(solidfill,pozadi);
  137.       inherited SKRYJ;
  138.       graph.BAR(X,Y,X+A,Y+A);
  139.       graph.setcolor(barva)
  140. end;
  141.  
  142.   procedure HRAC.ZVETSI(N:integer);
  143.    begin
  144.      SKRYJ;
  145.      A:=A+N;
  146.      if A<0 then A:=0;
  147.      UKAZ
  148.    end;
  149.  
  150. (***********************************JIDLO**************************************)
  151.   constructor JIDLO.INIT(X1,Y1,R1: integer);
  152.     begin
  153.       BOD.INIT(X1,Y1);
  154.       R:=R1;
  155.     end;
  156.  
  157.   procedure JIDLO.UKAZ;
  158.   begin
  159.     graph.setcolor(red);
  160.     setfillstyle(SolidFill,RED);
  161.     inherited ukaz;
  162.     graph.fillellipse(X,Y,R,R);
  163.     graph.setcolor(white);
  164.   end;
  165.  
  166.   procedure JIDLO.SKRYJ;
  167. begin graph.setcolor(pozadi);
  168.       graph.SetFillStyle(SolidFill,pozadi);
  169.       inherited SKRYJ;
  170.       graph.fillellipse(X,Y,R,R);
  171.       graph.setcolor(white);
  172. end;
  173.  
  174. (******************************************************************************)
  175. var gd, gm: smallint;
  176.     J:JIDLO;
  177.     H:HRAC;
  178.  
  179. begin  gd:=detect;
  180.        initgraph(gd,gm,'');
  181.        H.INIT(100,100,40); H.UKAZ; H.POSUN(10);
  182.        H.zvetsi(10);
  183.        readln;
  184.  
  185.        H.DONE;
  186.   readln;
  187.   closegraph;
  188. end.
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top