В произвольном месте экрана появляется красный круг. он передвигается по нажатию клавиш управления курсором и меняет при этом цвета: ↑-на синий, ↓-желтый, ←-зелёный, →-серый. круг не выходит за пределы экрана. Выход на Esc — Pascal(Паскаль)

uses crt,graph;
var gd,gm,x,y,r,c:integer;
procedure Krug(x,y,r,c:integer);{рисование круга}
begin
Setcolor(c);
Circle(x,y,r);
setfillstyle(1,c);
floodfill(x,y,c);
end;
procedure Dviz(x,y,r,c,xmx,ymx:integer);{движение по стрелкам}
var x1,y1:integer;
    k:char;
    move:boolean;
begin
move:=true;
repeat
if keypressed then{если нажата клаывиша}
  begin
    k:=readkey;{читаем ее код}
    if k=#80 then{стрелка вниз}
      begin
        c:=14;{цвет желтый}
        y1:=y;
        x1:=x;
        y:=y+5;{перемещаемся вниз}
        move:=true;
        if y>ymx-r then y:=y1;{низ экрана - стоп}
      end;
    if k=#72 then{тоже вверх}
      begin
        c:=9;
        y1:=y;
        x1:=x;
        y:=y-5;
        move:=true;
        if y<r then y:=y1;{верхний край}
      end;
    if k=#77 then{тоже вправо}
      begin
        c:=7;
        y1:=y;
        x1:=x;
        x:=x+5;
        move:=true;
        if x>xmx-r then x:=x1;
      end;
    if k=#75 then{влево}
      begin
        c:=2;
        y1:=y;
        x1:=x;
        x:=x-5;
        move:=true;
       if x<r then x:=x1;
      end;
  end;
if move then{если получили исходные данные}
  begin
   Krug(x1,y1,r,c);{рисуем круг}
   cleardevice;{очищаем экран}
   Krug(x,y,r,c);{рисуем на новом месте}
   move:=false;{очищаем ввод, ждем новых данных}
  end;
until k=#27;{Esc- exit}
end;
begin
randomize;
gd:=detect;
Initgraph(gd,gm,'');
OutTextXY(200,20,'Uprawlenye strelkami,  Vyhod-Esc');
OutTextXY(200,40,'         Press Enter...');
readln;
r:=25;{радиус, можно и вводом задать}
x:=random(getmaxX-2*r+1)+r;{случайная точка на экране с учетом радиуса}
y:=random(getmaxY-2*r+1)+r;
c:=12;{начальный цвет-красный(яркий, можно темный=4)}
Krug(x,y,r,c);{}
Dviz(x,y,r,c,getmaxX,getmaxY);{}
closegraph
end.

Leave a Comment

5 + 2 =