Рисование дерева с помощью Push - листа
Как - то хотелось написать Push лист. В принципе написал, потом fxm немного подправил, чтобы сделать его поцивильнее, но это не суть. Написать то написал, но захотелось где-то и использовать. И тут я вспомнил, что на liberty basic , был пример рисования дерева. Взял и переписал его, в итоге вот что вышло:
Code
Type PushList
d As Integer
p As PushList Ptr
Declare Sub PushValue(ByRef top As PushList Ptr , ByVal d As Integer)
Declare Function PopValue(ByRef top As PushList Ptr) As Integer
End Type
Sub PushList.PushValue(ByRef top As PushList Ptr , ByVal d As Integer)
top = New PushList(d, top)
End Sub
Function PushList.PopValue(ByRef top As PushList Ptr) As Integer
Dim pv As PushList Ptr = top
Function = pv->d
top = top->p
Delete pv
End Function
Dim Shared top As PushList Ptr
Screen 16
Dim Shared As Integer _
angle = 0 , _
delta = 10 , _
distance = 60
Draw "B M256,300 C2"
Sub DrawTree()
If (distance > 0) Then
Draw "TA" & -angle & "U" & distance
angle+=30
Sleep(300)
top->PushValue(top, distance)
distance = distance - delta
DrawTree()
angle-=60
DrawTree()
angle+=30
distance=top->PopValue(top)
Draw "TA" & 0 - angle & "BD" & distance
EndIf
End Sub
DrawTree()
Sleep