Вот, посмотри, потести, покспереминтируй со значениями...
И самое главное:
Не волнуйся...Код
Uses
Crt, DOS;
Const
S:String = 'XX:XX:XX'; {‚лў®¤Ё¬ п бва®Є }
X:Byte = 1;
Y:Byte = 1;
XOld:Byte = 1;
YOld:Byte = 1;
Direction:Byte = 1; {’ЁЇ Їа ў«ҐЁп}
NeedTime:Boolean = True; {ЏаЁ§ Є ўлў®¤ ⥪г饣® ўаҐ¬ҐЁ}
Pause:Word = 2000; {Џ г§ ¬Ґ¦¤г ®Ў®ў«ҐЁп¬Ё}
ChangeDelay = 4; {Џ®б«Ґ бЄ®«мЄЁ и Ј®ў ¬Ґпвм Їа ў«ҐЁҐ}
Var
Hour, Minute, Second, Sec100 : Word;
St:String;
i:Byte;
Procedure GenerateTimeString;
begin
GetTime(Hour, Minute, Second, Sec100);
Str(Hour,St);
If St[0]=#1 then Insert('0',St,1);
S[1]:=St[1];
S[2]:=St[2];
Str(Minute,St);
If St[0]=#1 then Insert('0',St,1);
S[4]:=St[1];
S[5]:=St[2];
Str(Second,St);
If St[0]=#1 then Insert('0',St,1);
S[7]:=St[1];
S[8]:=St[2];
end;
Procedure Warning;
begin
i:=ChangeDelay;
Sound(300);
Delay(100);
NoSound;
end;
Begin
Randomize;
ClrScr;
i:=1;
Repeat
If i=ChangeDelay then
begin
Direction:=Random(4)+1; {‚лЎ®а Їа ў«ҐЁп}
i:=1;
end;
Inc(i);
{…б«Ё ўл нв®Ј® ҐйҐ Ґ Їа®е®¤Ё«Ё, Їа®бв® гЎҐаЁ}
If NeedTime then GenerateTimeString;
Case Direction of
1:If X<80 then Inc(x) {‚Їа ў®}
else Warning;
2:If X>1 then Dec(x) {‚«Ґў®}
else Warning;
3:If Y>1 then Dec(y) {‚ўҐае}
else Warning;
4:If Y<25 then Inc(y) {‚Ё§}
else Warning;
end;
{‡ вЁа Ґ¬ бв ал© ўлў®¤}
GotoXY(XOld,YOld); TextColor(Black); TextBackGround(Black); Write(S);
{ЋЎ®ў«пҐ¬ § 票п бв але Є®®а¤Ё в}
XOld:=X; YOld:=Y;
{‚лў®¤Ё¬ ®Ў®ў«Ґго Ёдг}
GotoXY(XOld,YOld); TextColor(Random(14)+1); TextBackGround(Black); Write(S);
Delay(Pause);
Until KeyPressed;
End.