• проблема заключается в том что на месте, которое выделено "//...//" PascalABC.Net говорит, что там ошибка, пожалуйста помогите, укажите ошибку и если есть возможность её исправить, это срочно
    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.

Ответы 4

  • Простите, это требование или возможность?
    • Автор:

      missy11
    • 6 лет назад
    • 0
  • В данном случае это требование. Процедура - собственный блок begin ... end, и если описать переменную внутри этой процедуры, ее можно (хоть это и нехорошо - система не выдаст ошибку, но предупреждение даст все равно) использовать в качестве параметра цикла. А вот делать переменную цикла глобальной PascalABC.NET не позволяет.
  • О! Разумные ограничения.
    • Автор:

      coal
    • 6 лет назад
    • 0
  • У вас же компилятор четко описывает причину ошибки:Переменная цикла for должна описываться в том же блоке, что и цикл forПишите заголовки циклов в виде for var i:=... - это требование PascalABC.NET
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years