Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ инитграф кружок :()

Автор: kr3v3tkus 12.04.2006 21:11

кружок должен отражаться под прямым углом от линии и от краёв, чтото не так с процедурами (

все процедуры переделал, но не могу разобраться с флагами( устанавливают последовательность )

Код
program lol;
uses crt,graph;
var gd,gm,i,x,y:integer;
    fl:boolean;

procedure die_down(var x,y:integer);
begin
  if fl=true then
  repeat
    setcolor(black);
    circle(x,y,10);
    inc(x);dec(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=true;

  until ((x=32)or(x=610))or(y=11)
  else
  repeat
    setcolor(black);
    circle(x,y,10);
    dec(x);dec(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=false;

  until ((x=32)or(x=610))or(y=11);
end;

procedure die_up(var x,y:integer);
begin
  if  fl=true then
  repeat
    setcolor(black);
    circle(x,y,10);
    inc(x);inc(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=true;

  until ((x=32)or(x=610))or(y=229)
  else
  repeat
    setcolor(black);
    circle(x,y,10);
    dec(x);inc(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=false;

  until ((x=32)or(x=610))or(y=229);
end;

procedure die_left(var x,y:integer);
begin
  if  fl=true then
  repeat
    setcolor(black);
    circle(x,y,10);
    inc(x);dec(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=true;

  until (y=229)or(y=11)
  else
  repeat
    setcolor(black);
    circle(x,y,10);
    dec(x);dec(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=false;

  until (y=229)or(y=11);
end;

procedure die_right(var x,y:integer);
begin
  if fl=true then
  repeat
  fl:=true;
    setcolor(black);
    circle(x,y,10);
    dec(x);inc(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=true;

  until (y=229)or(y=11)
  else
  repeat
    setcolor(black);
    circle(x,y,10);
    dec(x);dec(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);

    fl:=false;

  until (y=229)or(y=11);
end;

procedure die_go(var x,y:integer);
begin
  while y<>229 do
  begin
    setcolor(black);
    circle(x,y,10);
    inc(x);inc(y);
    setcolor(white);
    circle(x,y,10);
    delay(1000);
  end;
end;

begin
clrscr;
gd:=detect;
initgraph(gd,gm,'..\bgi');
if graphresult=grok then
begin
  x:=220;
  y:=140;
  setcolor(white);
  line(0,240,640,240);
  circle(x,y,10);
  die_go(x,y);
  while true do
  begin
    if y=229 then die_down(x,y);
    if y=11 then die_up(x,y);
    if x=610 then die_right(x,y);
    if x=32 then die_left(x,y);
  end;
end;
readkey;
closegraph;
end.

Автор: kr3v3tkus 13.04.2006 2:18

ну подскажите хотяб как связать sad.gif