javavi
 Guru
 Joined: 01/10/2023 Location: UkrainePosts: 571 |
| Posted: 03:58pm 02 Apr 2025 |
|
|
|
Diagonal Scrolling Clock

Const Mode.N=2 Const Font.N=1 Const T.Scale=4 Const T.Size=Len(Time$) MODE Mode.N Const X.Res=MM.HRES,Y.Res=MM.VRES Font Font.N Const X.FSize=MM.Info(FONTWIDTH) Const Y.FSize=MM.Info(FONTHEIGHT) Const X.Offset=X.FSize*T.Scale*T.Size\2 Const Y.Offset=Y.FSize*T.Scale\2 Dim integer X.Dir=1,Y.Dir=1 Dim integer X.Pos=MM.HRES\2,Y.Pos=MM.VRES\2 Dim integer FC,BC Dim Clr(15)=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) Colour Map Clr(),Clr() '================================================= FRAMEBUFFER LAYER 0 FRAMEBUFFER WRITE L Font 9 '------------------------------------------------ Do If BC=0 Then BC=Int(Rnd*15)+1 Colour Clr(BC) Print @(0,0); For n=1 To (X.Res\8)*(Y.Res\8) Print Chr$(32+Int(Rnd*3)); Next EndIf
If X.Dir=1 Then Blit READ 1, 0,0,1,MM.VRES Blit 1,0,0,0,MM.HRES-1,MM.VRES Blit Write 1, MM.HRES-1,0 Else Blit READ 1, MM.HRES-1,0,1,MM.VRES Blit 0,0,1,0,MM.HRES-1,MM.VRES Blit Write 1, 0,0 EndIf Blit Close 1 If Y.Dir=1 Then Blit READ 1, 0,0,MM.HRES,1 Blit 0,1,0,0,MM.HRES,MM.VRES-1 Blit Write 1, 0,MM.VRES-1 Else Blit READ 1, 0,MM.VRES-1,MM.HRES,1 Blit 0,0,0,1,MM.HRES,MM.VRES-1 Blit Write 1, 0,0 EndIf Blit Close 1 '------------------------------------------------ Pause 20 FRAMEBUFFER WRITE N If FC=0 Then FC=Int(Rnd*15)+1 Text X.Pos,Y.Pos,Time$,"CM",Font.N,T.Scale,Clr(FC) Inc X.Pos,X.Dir:Inc Y.Pos,Y.Dir If X.Pos-X.Offset<0 Then X.Dir=1:FC=0 If X.Pos+X.Offset>MM.HRES Then X.Dir=-1:FC=0 If Y.Pos-Y.Offset<0 Then Y.Dir=1:BC=0 If Y.Pos+Y.Offset>MM.VRES Then Y.Dir=-1:BC=0 FRAMEBUFFER WRITE L Loop While Inkey$="" '================================================ DefineFont 9 04200808 80402010 08040201 01020408 10204080 08080808 08080808 End DefineFont |