Игра змейка - Pascal ABC

Формулировка задачи:

Помогите пожалуйста, нужно написать игру "Змейка", как в тетрисе.

Код к задаче: «Игра змейка - Pascal ABC»

textual
     program Zmeya;
Uses graphabc, events,timers;
 
const
r=5 ;
d=7;
 
type
TDirection = (None, Left, Right, Up, Down);
 
var x,t,y,i,z,xr,yr,prin1,prin2,prin3,prin4,prin5,k,s4et,prin6: integer;
  Direction :TDirection;
  xs,ys,bufx,bufy:array[1..200]of integer;
 
 
  procedure shar3;
     begin
     SetBrushColor(clYellow);
     circle(xs[k],ys[k],r);
     end;
 
procedure Circl;
begin
  SetBrushColor(clBlack);
  circle(x,y,r);
end;
 
procedure rshar ;
      begin
      xr:=Random(WindowWidth) ;
      yr:=Random( WindowHeight);
      end;
 
procedure rshar2;
       begin
       SetBrushColor(clYellow);
      circle(xr,yr,r);
      end;
 
          procedure XP(Key:integer);
            begin
                                                 case Key of
                                                 VK_Left: Direction := Left ;
                                                 VK_Right:Direction := Right ;
                                                 VK_UP:  Direction := UP ;
                                                 VK_Down: Direction :=Down ;
                                                 end;
             circle(x,y,r);
             end;
 
 
           procedure pause;
                       begin
                  for i:=1 to 1 do
                  begin
                  Circl;
                  rshar2;
                  ClearWindow;
                  rshar2  ;
                  prin1:=(xr-x+r)*(xr-x+r)+(yr-y)*(yr-y)  ;
                  prin2:=(xr-x-r)*(xr-x-r)+(yr-y)*(yr-y)  ;
                  prin3:=(xr-x)*(xr-x)+(yr-y+r)*(yr-y+r)  ;
                  prin4:=(xr-x)*(xr-x)+(yr-y-r)*(yr-y-r)  ;
                  prin5:=R*R;
                  if (prin1)<=(prin5) then begin
                                           rshar ;
                                           s4et:=s4et+1;
                                           end;
 
 
                   if (prin2)<=(prin5) then begin
                                            rshar ;
                                            s4et:=s4et+1;
                                            end;
                   if (prin3)<=(prin5) then begin
                                            rshar ;
                                            s4et:=s4et+1;
                                            end;
                   if (prin4)<=(prin5) then begin
                                            rshar ;
                                            s4et:=s4et+1;
                                            end;
 
                    case Direction of
                    Left: begin   x:=x-d; if x<=0 then x:=WindowWidth  end;
                    Up:  begin    y:=y-d; if y<=0 then y:=WindowHeight  end;
                    Right: begin  x:=x+d; if x>=WindowWidth then x:=0  end;
                    Down: begin   y:=y+d; if y>=WindowHeight then y:=0  end;
                    end;
                            xs[1]:=x;
                            ys[1]:=y;
                            for k:=1 to s4et do
                            begin
                             bufx[k]:=xs[k];
                             bufy[k]:=ys[k];
 
                            end;
                            for k:=1 to s4et do
                            begin
                            xs[k+1]:=bufx[k];
                            ys[k+1]:=bufy[k] ;
                            end;
                            for k:=2 to s4et do
                            shar3;
                           Circl;
                     end;
                end;
 begin
rshar;
s4et:=2;
 
 Direction := None;
 
 x:=WindowWidth div 2;
 y:=WindowHeight div 2;
  OnKeyDown:=XP;
  CreateTimer(150,pause);
 
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

8   голосов, оценка 4.000 из 5


СДЕЛАЙТЕ РЕПОСТ