| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- {==================}
- {ˆä®p¬ ⨪ 1999/8}
- {==================}
- { Šp¨¢ë¥ ƒ¨«ì¡¥pâ }
- {==================}
- uses CRT, Graph;
- const
- del = 1; {§ ¤¥p¦ª }
- path = ''; {ä ©«ë *.bgi ¢ p ¡®ç¥¬ ª â «®£¥}
- var
- d, r : integer;
- n, orient : byte;
- x0, y0, s, h, hscr, wscr : word;
- prs : real;
- procedure LineDown;
- begin LineRel (0, h) end;
- procedure LineUp;
- begin LineRel (0, -h) end;
- procedure LineLeft;
- begin LineRel (-h, 0) end;
- procedure LineRight;
- begin LineRel (h, 0) end;
- procedure GD (i : byte); forward;
- procedure GU (i : byte); forward;
- procedure GL (i : byte);
- begin
- if i > 0 then
- begin
- GD (i-1); LineLeft;
- GL (i-1); LineDown;
- GL (i-1); LineRight;
- GU (i-1); Delay (del);
- end
- end;
- procedure GR (i : byte);
- begin
- if i > 0 then
- begin
- GU (i-1); LineRight;
- GR (i-1); LineUp;
- GR (i-1); LineLeft;
- GD (i-1); Delay (del);
- end
- end;
- procedure GU;
- begin
- if i > 0 then
- begin
- GR (i-1); LineUp;
- GU (i-1); LineRight;
- GU (i-1); LineDown;
- GL (i-1); Delay (del);
- end
- end;
- procedure GD;
- begin
- if i > 0 then
- begin
- GL (i-1); LineDown;
- GD (i-1); LineLeft;
- GD (i-1); LineUp;
- GR (i-1); Delay (del);
- end
- end;
- function Power2 (n : byte) : word; {¢®§¢¥¤¥¨¥ 2 ¢ á⥯¥ì n}
- var p, i : word;
- begin
- p := 2;
- for i := 1 to n-1 do p := p * 2;
- Power2 := p
- end;
- BEGIN
- ClrScr;
- {¢¢®¤ ¨á室ëå ¤ ëå ¤«ï ¯®áâp®¥¨ï ªp¨¢®© ƒ¨«ì¡¥pâ }
- repeat
- Write ('‚¢¥¤¨â¥ ¤«¨ã áâ®p®ë ®¯®p®£® ª¢ ¤p â ');
- Write (' ¢ % ®â ¢ëá®âë íªp ');
- ReadLn (prs)
- until prs < 100;
- Write ('‚¢¥¤¨â¥ ¯®p冷ª ªp¨¢®© ');
- ReadLn (n);
- repeat
- Write ('‚¢¥¤¨â¥ ®p¨¥â æ¨î ªp¨¢®©:');
- Write ('¢¢¥på - 1, ¢¨§ - 2, ¢¯p ¢® - 3, ¢«¥¢® - 4 ');
- ReadLn (orient)
- until (orient >= 1) and (orient <= 4);
-
- d := detect;
- InitGraph (d, r, path);
- SetColor (LightRed);
- hscr := GetMaxY + 1; {¢ëá®â íªp }
- wscr := GetMaxX + 1; {è¨p¨ íªp }
- s := Round (prs / 100 * hscr); {áâ®p® ª¢ ¤p â }
- h := Round (s / Power2 (n) - 1); {¤«¨ á¢ï§®ª}
- {H 室¨¬ ª®®p¤¨ âë ç «ì®© â®çª¨ ªp¨¢®©. „«ï ®p¨¥â 樨:
- ¢¢¥på ¨ ¢¯p ¢® ç «ì ï â®çª - «¥¢ ï ¨¦ïï â®çª ª¢ ¤p â ;
- ¢¨§ ¨ ¢«¥¢® - ¯p ¢ ï ¢¥påïï â®çª ª¢ ¤p â }
- case orient of
- 1, 3 : {¢¢¥på ¨«¨ ¢¯p ¢®}
- begin
- x0 := wscr div 2 - s div 2;
- y0 := hscr div 2 + s div 2
- end;
- 2, 4 : {¢¨§ ¨«¨ ¢«¥¢®}
- begin
- x0 := wscr div 2 + s div 2;
- y0 := hscr div 2 - s div 2
- end;
- end; {case}
- MoveTo (x0, y0);
- case orient of
- 1 : GU (n);
- 2 : GD (n);
- 3 : GR (n);
- 4 : GL (n)
- end;
- ReadLn;
- CloseGraph
- END.
|