Пример работы с мышкой в графическом режиме- Pascal(Паскаль)

uses
  graph,crt,dos;
var
  xc,yc,x1,y1,mx,my,d,m,x,y,a:integer;
  g:char;
  r:registers;
begin
  clrscr;
  textcolor(11);
  window(30,1,80,25);
  writeln('МЫШЬ В КЛЕТКЕ');
  window(1,2,80,25);
  writeln('Демонстрация возможностей мыши в графическом режиме.');
  writeln('Pаботают:"+", "-", ESC, левая и правая кнопки мыши - сам поймешь как.');
  writeln('Курсор сейчас убрал специально...');
 
(*  r.ah:=$001;
  r.ch:=$20; {Курсора нет}
  r.cl:=$00;
  intr($10,r);
              *)
  readkey;
 
 
  d:=vga;
  m:=vgahi; {Графический режим}
  initgraph(d,m,'c:\bp\bgi');
 
  r.ax:=0; {Инициализация крысы}
  intr($33,r);
 
  randomize;
  r.ax:=4;
  r.cx:=random(640); {Произвольные координаты крысы}
  r.dx:=random(480);
  intr($33,r);
 
  with r do
    begin
      ax:=$007;
      cx:=100; {Вертикальные границы крысы}
      dx:=540;
    end;
  intr($33,r);
 
  with r do
    begin
      ax:=$008;
      cx:=100; {Горизонтальные границы крысы}
      dx:=380;
    end;
  intr($33,r);
 
  r.ax:=1; {Крыса на экране}
  intr($33,r);
 
  x1:=GetMaxX div 2;
  y1:=GetMaxY div 2;
  xc:=x1;
  yc:=y1;
 
  repeat
    asm
      mov ax,3
      int 33h
      mov a,bx {Определение состояния крысы:а-кнопка,х,у-координаты}
      mov x,cx
      mov y,dx
 
      mov cx,mx
      mov dx,my {Устанавливаем чувствительность крысы}
      mov ax,0fh
      int 33h
    end;
  if keypressed then
     begin
       if g='+' then
          begin mx:=mx+5;my:=my+5;end;
       if g='-' then
          begin mx:=mx-5;my:=my-5;
       if (mx<=0) or (my<=0) then
          begin mx:=0;my:=0;end;
     end;
  end;
  if a=1{левая} then
     begin
       line(x,y,x1,y1);
       x1:=x;
       y1:=y;
     end;
  if a=2{правая}then
     line(x,y,xc,yc);
{     putpixel(x,y-1,13);}
  while keypressed do g:=readkey;{очищение буфера клавиатуры(чтобы не пищал)}
  until g=#27;
 
  CloseGraph;
end.

Leave a Comment

8 + 2 =