Оставлю пока набросок, есть над чем подумать.
;701
;6.2
;543
Global Dim dx.l(8)
Global Dim dy.l(8)
Global m.f=0.7
dx(0)=0:dy(0)=-1
dx(1)=1:dy(1)=-1
dx(2)=1:dy(2)=0
dx(3)=1:dy(3)=1
dx(4)=0:dy(4)=1
dx(5)=-1:dy(5)=1
dx(6)=-1:dy(6)=0
dx(7)=-1:dy(7)=-1
Procedure bt(x0,y0,dir.l,len.l)
If len<>0
x1.l=x0+len*dx(dir)
y1.l=y0+len*dy(dir)
LineXY(x0,y0,x1,y1,$FFFFFF)
bt(x1,y1,(dir-1)&7,Int(len*m))
bt(x1,y1,(dir+1)&7,Int(len*m))
EndIf
EndProcedure
If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
; Repeat
StartDrawing(ScreenOutput())
bt(320,480,0,64*2)
StopDrawing()
FlipBuffers()
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
; IDE Options = PureBasic 5.30 (Windows - x86)
; CursorPosition = 31
; Folding = -
;701
;6.2
;543
Global Dim dx.l(8)
Global Dim dy.l(8)
Global m.f=0.7
dx(0)=0:dy(0)=-1
dx(1)=1:dy(1)=-1
dx(2)=1:dy(2)=0
dx(3)=1:dy(3)=1
dx(4)=0:dy(4)=1
dx(5)=-1:dy(5)=1
dx(6)=-1:dy(6)=0
dx(7)=-1:dy(7)=-1
Procedure bt(x0,y0,dir.l,len.l)
If len<>0
x1.l=x0+len*dx(dir)
y1.l=y0+len*dy(dir)
LineXY(x0,y0,x1,y1,$FFFFFF)
bt(x1,y1,(dir-1)&7,Int(len*m))
bt(x1,y1,(dir+1)&7,Int(len*m))
EndIf
EndProcedure
If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
; Repeat
StartDrawing(ScreenOutput())
bt(320,480,0,64*2)
StopDrawing()
FlipBuffers()
Repeat
Until WindowEvent()=#PB_Event_CloseWindow
EndIf
; IDE Options = PureBasic 5.30 (Windows - x86)
; CursorPosition = 31
; Folding = -
Комментарии
Отправить комментарий