На досуге между рерайтингом :-) скачал сабж, посмотрел, покопался.
Первая прога:
Первая прога:
scx=700:scy=700
If OpenWindow(0, 0, 0, scx, scy, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  SmartWindowRefresh(0, 1)
  
  If CreateImage(0, scx, scy)
    x=0
    j.f=0
    Num=10
    DataSection
      Data.s "Hello!", "Pure basic", "Greatest!", "COOL", "It's nice!", "* colorfull *","It's   a   w o n d e r !", "I tryed it", "r e a l l y", "[ 2 0 1 5 ]", "--= 2015 =--", "(c)", "*** Nice software ***", "PURE BASIC", "P u r e   B a s i c"
    EndDataSection
    
    Global Dim x.f(Num): Global Dim y.f(Num)
    Global Dim xd(Num)
    Global Dim cr.f(Num):Global Dim cg.f(Num):Global Dim cb.f(Num)
    Global Dim crd.f(Num):Global Dim cgd.f(Num):Global Dim cbd.f(Num)
    Global Dim mes.s(30)
    
    For i= 1 To 15
      Read. s mes.s(i)
    Next i  
    
    For i = 1 To Num
      x.f(i)=Random(scx)/2+scx/4: y.f(i)=1
      xd(i)=Random(scx)/3
      cr(i)=Random(254):cg(i)=Random(254):cb(i)=Random(254)
      crd(i)=1:cgd(i)=1:cbd(i)=1
    Next i
    
    StartDrawing(WindowOutput(0))
    Box(0,0,scx,scy,RGB(0,0,0))
    StopDrawing()
    
    j.f=0
    h.f=0
    Repeat
      
      For i = 1 To Num
        cr(i)=cr(i)+crd(i)
        ;Debug(cr(1))
        If cr(i)>254
          crd(i)=crd(i)*-1
        EndIf  
        If cr(i)=0
          crd(i)=crd(i)*-1
        EndIf
        
        cg(i)=cg(i)+cgd(i)
        If cg(i)>254
          cgd(i)=cgd(i)*-1
        EndIf  
        If cg(i)=0
          cgd(i)=cgd(i)*-1
        EndIf
        
        cb(i)=cb(i)+cbd(i)
        If cb(i)>254
          cbd(i)=cbd(i)*-1
        EndIf  
        If cb(i)=0
          cbd(i)=cbd(i)*-1
        EndIf
      Next i 
      
      j.f=j.f+0.005
      h.f=h.f+0.01
      
      StartDrawing(WindowOutput(0))  
      GrabDrawingImage(0, 0, 0, scx, scy)
      DrawImage(ImageID(0),0,1,scx,scy)
      
      Box(1,1,scx,1,RGB(cr(8)/2, cg(8)/2, cb(8)/2))
      
      x.f(1)=x.f(1)+Sin(j.f)*Cos(h.f)*1.5
      x.f(2)=scx-x.f(1)
      Box(x.f(1),y.f(1),3,3,RGB(cr(1),cg(1),cb(1)))
      Box(x.f(2),y.f(2),3,3,RGB(cr(1),cg(1),cb(1)))
      Box(x.f(1)+xd(1),y.f(1),3,3,RGB(cr(1),cg(1),cb(1)))
      Box(x.f(2)-xd(1),y.f(2),3,3,RGB(cr(1),cg(1),cb(1)))
      Box(x.f(1)+xd(1)/4,y.f(1),1,1,RGB(cr(1),cg(1),cb(1)))
      Box(x.f(2)-xd(1)/4,y.f(2),1,1,RGB(cr(1),cg(1),cb(1)))      
      
      x.f(3)=x.f(3)+Sin(h.f)*Cos(j.f)*1
      x.f(4)=scx-x.f(3)
      Box(x.f(3),y.f(3),3,3,RGB(cr(2),cg(2),cb(2)))
      Box(x.f(4),y.f(4),3,3,RGB(cr(2),cg(2),cb(2)))
      Box(x.f(3)+xd(2),y.f(3),2,2,RGB(cr(2),cg(2),cb(2)))
      Box(x.f(4)-xd(2),y.f(4),2,2,RGB(cr(2),cg(2),cb(2)))
      Box(x.f(3)+xd(2)/2,y.f(3),1,1,RGB(cr(2),cg(2),cb(2)))
      Box(x.f(4)-xd(2)/2,y.f(4),1,1,RGB(cr(2),cg(2),cb(2)))      
      
      x.f(5)=x.f(5)+Sin(h.f*5)*Cos(h.f)*Sin(j.f)*3
      x.f(6)=scx-x.f(5)
      Box(x.f(5),y.f(5),5,5,RGB(cr(3),cg(3),cb(3)))
      Box(x.f(6),y.f(6),5,5,RGB(cr(3),cg(3),cb(3)))      
      
      If Random(100)>90
        xs=Random(scx)
        Box(xs,1,2,2,RGB(cr(7),cg(7),cb(7)))  
        Box(scx-xs,1,2,2,RGB(cr(7),cg(7),cb(7))) 
      EndIf
      
      If Random(1000)>995
        i=Random(15)
        DrawingMode(#PB_2DDrawing_Transparent)
        x1=Random(scx/2)+Random(scx)/4
        DrawText(x1+1, 51, mes.s(i), RGB(0,0,0))
        DrawText(x1, 50, mes.s(i), RGB(255-cr(1),255-cg(2),cb))
      EndIf
      
      Delay(30)
      StopDrawing() 
      
    Until Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
    
  EndIf
EndIf
