Сразу две находки

 


Трудно описать тот путь, каким Гугл выведет на интересные открытия. Вышел на статью,  в которой упоминались всяческие алгоритмы, но одном из которых я залип, пытаясь написать программу. С наскока не получилось, но все же удалось:


Global Dim o(320,200)
Global Dim n(320,200)
Procedure.a rop(x,y)
  re.a=o(x,y)
  If x
    re=re+o(x-1,y)
  EndIf
  If y
    re=re+o(x,y-1)
  EndIf
  If x<320
    re=re+o(x+1,y)
  EndIf
  If y<200
    re=re+o(x,y+1)
  EndIf
  ProcedureReturn re
EndProcedure
o(159,99)=1
If InitSprite() And OpenWindow(0,0,0,640*2,2*400,"PERQ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And OpenWindowedScreen(WindowID(0),0,0,2*640,2*400,0,0,0) 
  
  For s=1 To 4
    
    StartDrawing(ScreenOutput()) 
    For y=0 To 199
      For x=0 To 319
        Box(x*4,y*4,3,3,$FFFFFF*o(x,y))
        r=rop(x,y)
        r=r%2
        n(x,y)=n(x,y)!r
      Next x
    Next y
    StopDrawing() 
    FlipBuffers() 
    
    ;StartDrawing(ScreenOutput()) 
    For y=0 To 199
      For x=0 To 319
        o(x,y)=o(x,y)!n(x,y)
        ;Box(x*4,y*4,3,3,$FFFFFF*o(x,y))
      Next x
    Next y
    ;     StopDrawing() 
    ;     FlipBuffers() 
  Next s
  Repeat
    If GetAsyncKeyState_(#VK_ESCAPE)&32768
      Break
    EndIf
    
  Until WindowEvent()=#PB_Event_CloseWindow 
  
EndIf

Это первое открытие. А второе - компьютер PERQ, упомянутый в статье.

Комментарии