Microsoft Small Basic

Program Listing: CLJ375
' Triangles
' Copyright © 2018 Nonki Takahashi. The MIT License.
' Last update 2018-02-02

GraphicsWindow.Title = "Triangles"
Turtle.Speed = 8
GraphicsWindow.BrushColor = "#F00"
caption = "Triangle"
x[0] = 60
y[0] = 30
a[0] = -40
a[1] = -110
l[1] = 2 * Math.Floor(150 / Math.SquareRoot(3))
a[2] = -120
l[2] = l[1] / 2 + Math.Floor(150 * Math.Tan(Math.GetRadians(40)))
a[3] = -130
l[3] = Math.Floor(150 / Math.Cos(Math.GetRadians(40)))
x[1] = x[0] + l[1] / 2
y[1] = y[0]
DrawTriangle()
GraphicsWindow.BrushColor = "#F70"
caption = "Right Triangle"
x[0] = 320
x[1] = x[0]
y[1] = y[0]
a[0] = -60
a[1] = -120
l[1] = 150
a[2] = -90
l[2] = Math.Floor(l[1] * Math.SquareRoot(3))
a[3] = -150
l[3] = 300
DrawTriangle()
GraphicsWindow.BrushColor = "#FF0"
caption = "Isosceles Triangle"
x[0] = 60
y[0] = 230
a[0] = -40
a[1] = -100
l[1] = Math.Floor(150 / Math.Cos(Math.GetRadians(40)))
a[2] = -130
l[2] = Math.Floor(150 * Math.Tan(Math.GetRadians(40))) * 2
a[3] = a[2]
l[3] = l[1]
x[1] = x[0] + l[2] / 2
y[1] = y[0]
DrawTriangle()
GraphicsWindow.BrushColor = "#7F0"
caption = "Equilaterale Triangle"
x[0] = 340
l[1] = Math.Floor(150 / Math.SquareRoot(3)) * 2
a[0] = -30
a[1] = -120
x[1] = x[0] + l[1] / 2
y[1] = y[0]
For i = 2 To 3
a[i] = a[1]
l[i] = l[1]
EndFor
DrawTriangle()

Sub DrawTriangle
Turtle.PenUp()
Turtle.MoveTo(x[1], y[1])
Turtle.PenDown()
Turtle.Turn(-Turtle.Angle + a[0])
For i = 1 To 3
Turtle.Turn(a[i])
Turtle.Move(l[i])
x[i] = Turtle.X
y[i] = Turtle.Y
EndFor
GraphicsWindow.FillTriangle(x[1], y[1], x[2], y[2], x[3], y[3])
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(x[1], y[2] + 10, caption)
EndSub