' Turtle Graphics Library by Angelo Rosina 1995 ' Ported to Freebasic by Angelo Rosina 2007 ' '(RIGH and LEF because RIGHT and LEFT are reserved keywords, of course) Declare Sub LEF (gradi As Integer) Declare Sub SETCOL (C As Integer) Declare Sub SETSIZE (C As Integer) Declare Sub RIGH (gradi As Integer) Declare Sub FORW (passi As Integer) Declare Sub BACK (passi As Integer) Declare Sub TURTLE (numero As Integer) Declare Sub UP () Declare Sub DOWN () Declare Sub DTurtle () Dim Shared As Integer graph, dimen, angulo, N, dis, su, pasos Dim Shared As Integer colore(10), figura(5000,10), figura2() Dim Shared As Long X(10), Y(10) Dim Shared As String comando Sub BACK (passi As Integer) pasos = passi comando = "d " & Str(passi) DTurtle comando = "" pasos = 0 End Sub Sub DOWN su = 0 End Sub Sub DTurtle Static Dim As Integer rifa, lavora, XX, YY, scher(), FX, FY Dim As String R If rifa = 0 Then rifa = 1: Redim scher(5000) If lavora Then Put (XX - dimen * 4, YY - dimen * 2), scher, Pset 'SCREEN graph If su Then comando = "b" & comando FX = X(N) FY = Y(N) R = "s" & Str(dimen) & "bm" & Str(FX) & "," & Str(FY) & "c" & Str(colore(N)) & "Ta" & Str(angulo) & comando Draw R X(N) = X(N) + Sin(angulo / 57.2957) * dimen / 4 * pasos Y(N) = Y(N) + Cos(angulo / 57.2957) * dimen / 4 * pasos XX = X(N) YY = Y(N) Get (X(N) - dimen * 4, Y(N) - dimen * 2)-(X(N) + dimen * 4, Y(N) + dimen * 2), scher: lavora = 1 If dis = 0 Then R = "bm" & Str(XX) & "," & Str(YY) & "Ta" & Str(angulo) & "r1 ta " & Str(angulo + 15 + 360 * (angulo + 15 > 360)) & "u7 ta " & Str(angulo + 165 + 360 * (angulo + 165 > 360)) & "u7 ta" & Str(angulo) & " m" & Str(XX) & "," & Str(YY) Draw R Else Put (XX, YY), figura2, Or End If End Sub Sub FORW (passi As Integer) pasos = -passi comando = "u " & Str(passi) DTurtle comando = "" pasos = 0 End Sub Sub LEF (gradi As Integer) angulo += gradi Do Until angulo <= 360 angulo -= 360 Loop DTurtle End Sub Sub RIGH (gradi As Integer) angulo -= gradi Do Until angulo >= 0 angulo += 360 Loop DTurtle End Sub Sub SETCOL (C As Integer) colore(N) = C DTurtle End Sub Sub SETSIZE (C As Integer) dimen = C DTurtle End Sub Sub TURTLE (numero As Integer) Static Dim As Integer i, NN, j Dim As Integer ang() Redim figura2(dis) If dis <> 0 And graph <> 0 Then For i = 0 To dis figura2(i) = figura(i, numero) Next i End If NN = N N = numero If j = 0 Then j = 1: Redim ang(10): dimen = 4 If X(numero) = 0 Then X(numero) = 320 If Y(numero) = 0 Then Y(numero) = 100: colore(numero) = 15 ang(NN) = angulo angulo = ang(N) DTurtle End Sub Sub UP su = 1 End Sub