Microsoft Small Basic

Program Listing:
Embed this in your website
' Fractale view

   data()              'Input numbers&marks for controls
   init_View()
   Controls.ButtonClicked = OnButtonClicked

Sub Show_Fractal
  ' Base
  Base_Triangle()
  for k=Real_No[4] To 1 Step -1
    GraphicsWindow.PenWidth=1
    GraphicsWindow.PenColor="white"
    GraphicsWindow.BrushColor= GraphicsWindow.GetRandomColor() ' "white"
     PowerK=Math.Power(0.5,k)
      For i=1 To  (Math.Power(2,k)-1)  Step 2          ' Y direction

       For j=1 To (Math.Power(2,k)-1-(i-1))   Step 2        ' X direction
         BaseY[i][j]=ACY*PowerK +(i-1)*ACY*Powerk
         BaseX[i][j]=ACX*PowerK +(j-1)*ABX*PowerK +(i-1)*ACX*powerk
         gas[i][j]=Shapes.AddTriangle(0,0,PowerK*Lc,0,PowerK*(Lc-MCX),PowerK*YH)
         Shapes.Animate(gas[i][J],SX+BaseX[i][j],SY+AY-BaseY[i][j],1000/k)
       EndFor
     EndFor
  EndFor
EndSub

Sub Base_Triangle
  La=Real_No[1]    ' Length a
  Lb=Real_No[2]    ' Length b
  Lc=Real_No[3]    ' Length c
  MCX=(La*La+Lc*Lc-Lb*Lb)/2/Lc           ' MCX
  YH=math.SquareRoot(La*La-MCX*MCX)      ' Hight
  AX=0             ' Point-A X C
  AY=YH            ' Point-A Y . . .
  BX=Lc            ' Point-B X . . YH .
  BY=YH            ' Point-B Y A . . . . . B
  CX=MCX
  CY=0
  ABX=(AX+BX)
  ABY=(AY+BY)
  ACX=(AX+CX)
  ACY=(AY+CY)
  '
  GraphicsWindow.PenColor="#FF0000"  '"Red"
  GraphicsWindow.BrushColor="#FF0000"  '"Red"
  Base=Shapes.AddTriangle(AX,AY,BX,BY,CX,CY)
  SX=50             ' shift X
  SY=170            ' shift Y
  Shapes.Animate(Base,SX,SY,100)
  Program.Delay(500)
EndSub


Sub OnButtonClicked
  GraphicsWindow.BrushColor = "Red"
  name=controls.LastClickedButton     'Last button
  nm=controls.GetButtonCaption(name)  ' Button's caption
  Xloc=50+2*BW*(count)    ' Angle number / length showing position
    If nm="Del" Then
      Del_word()
   elseIf nm="AC" Then
      Reset()
   elseIf nm="Exe" Then
      Execute()
   else
    Make_word()
  endif
EndSub

Sub Fractale
  If Real_No[1]+Real_No[2] <= Real_No[3] Then
    Sound.PlayBellRing()    ' Check ( a+ b > C)
    Reset()
  endif
  For i= 1 To 4
    Shapes.Remove(T[i])   ' initial triangle and a b c
  EndFor
  Show_Fractal()          ' fractale showing
EndSub

Sub Sample_Triangle
  GraphicsWindow.PenColor="Yellow"
  GraphicsWindow.BrushColor="Yellow"
  AX=0
  AY=400
  BX=600
  BY=400
  CX=450
  CY=0
  MX=50
  MY=150
  T[1]=Shapes.AddTriangle(AX,AY,BX,BY,CX,CY)
  Shapes.SetOpacity(T[1],30)
  Shapes.Animate(T[1],MX,MY,600)
  T[2]=shapes.AddText(" a ")
  Shapes.Animate(T[2],MX+CX/2-50,MY+AY/2,800)
  T[3]=shapes.AddText(" b ")
  Shapes.Animate(T[3],MX+10+CX+(BX-CX)/2,MY+CY+(BY-CY)/2,1000)
  T[4]=shapes.AddText(" c ")
  Shapes.Animate(T[4],MX+BX/2,MY+BY,1200)
EndSub

Sub   Button_Set
  GraphicsWindow.BrushColor = "Blue"
   nn=0
    dm=s[1]
    Loop2:
      end_P=Text.GetIndexOf(dm," ")
      msg=text.GetSubText(dm,1,end_P-1)  ' word
      nn=nn+1
      btn[nn][1] =Controls.AddButton(msg, 10+BW*(nn-1), BH+50)
      Controls.SetSize(btn[nn][1] ,BW-2,BH-2)  'Set 13 Control buttons
      If nn=WN Then
         Goto end1
      EndIf
      dm=text.GetSubTextToEnd(dm,end_p+1)   'gets number value or mark's name
    Goto loop2
    end1:
  add_num=""
  count=0
EndSub

Sub Reset
     GraphicsWindow.Clear()
     GraphicsWindow.Show()
     init_View()
     Button_Set()
EndSub

Sub init_View
   WN=13   ' 13 words
   BW=70
   BH=45
   GW=BW*WN
   GH=BH*15+20
   GraphicsWindow.Hide()
   GraphicsWindow.top=0
   GraphicsWindow.Width = GW+2*10
   GraphicsWindow.Height = GH
   GraphicsWindow.Title = "Fractale graph"
   GraphicsWindow.Show()
   GraphicsWindow.BackgroundColor = "Teal"
   GraphicsWindow.BrushColor = "White"
   GraphicsWindow.FillRectangle(10+BW*0, 45, BW*3/2, BH-10)
   GraphicsWindow.FillRectangle(10+BW*2, 45, BW*3/2, BH-10)
   GraphicsWindow.FillRectangle(10+BW*4, 45, BW*3/2, BH-10)
   GraphicsWindow.FillRectangle(10+BW*6, 45, BW*3/2, BH-10)
   GraphicsWindow.BrushColor ="Yellow"
   GraphicsWindow.FontSize = 20
   GraphicsWindow.FontName = "Coorie new"
   GraphicsWindow.FontItalic="True"
   GraphicsWindow.DrawText(15,5,"Input a b c values (300-800 may be better)")
   GraphicsWindow.DrawText(10+BW*9,5,"Note!: Must be ( a + b > c ) ")
   GraphicsWindow.DrawText(10+BW*6,23,"Steps: Under 7 ")
   GraphicsWindow.DrawText(10+BW*9,40,"AC=All Clear")
   GraphicsWindow.DrawText(10+BW*9,60,"Exe=Enter Value or Run")
   Button_Set()
   GraphicsWindow.FontSize = 23
   GraphicsWindow.DrawText(20,45,"a: ")
   GraphicsWindow.DrawText(20+BW*2,45,"b: ")
   GraphicsWindow.DrawText(20+BW*4,45,"c: ")
   GraphicsWindow.DrawText(20+BW*6,45,"S: ")
   Sample_Triangle()   ' show sample triangle
EndSub

Sub data  ' 13 words
      s[1]="1 2 3 4 5 6 7 8 9 0 Del AC Exe "
EndSub

Sub Del_word
      Shapes.Remove(numbers[count])
      add_num=Text.GetSubText(add_num,1,Text.GetLength(add_num)-1)
      numbers[count] = Shapes.AddText(add_num)   ' 1 word delete
      Shapes.Move(numbers[count] , Xloc, 45)
EndSub

Sub Execute
      count=count+1
      Real_No[count]=add_num
      add_num=""
      If count=4 then
        Fractale()
      endif
EndSub

Sub Make_word
      Shapes.Remove(numbers[count])
      add_num=text.Append(add_num,nm) ' Add 1 word
      numbers[count] = Shapes.AddText(add_num)
      Shapes.Move(numbers[count], Xloc, 45)
EndSub

Copyright (c) Microsoft Corporation. All rights reserved.