Microsoft Small Basic

Program Listing: JVS076
Groups[1]="Air"
Groups[2]="Fires"
Groups[3]="Minerals"
Groups[4]="Liquids"
Groups[5]="Vital"
StartMaked[1] = 11
StartMaked[2] = 21
StartMaked[3] = 31
StartMaked[4] = 41
Element[1][1]="Air"
Element[1][2]="Steam"
Element[1][3]="Gas"
Element[1][4]="Typhoon"
Element[1][5]="Dust"
Element[1][6]="Ash"
Element[1][7]="Cloud"
Element[1][8]="Radio wave"
Element[1][9]="Radiation"
Element[1][10]="Pollen"
Element[2][1]="Fire"
Element[2][2]="Lava"
Element[2][3]="Plasma"
Element[2][4]="Coal"
Element[2][5]="Oil"
Element[2][6]="Sun"
Element[2][7]="Volocano"
Element[2][8]="Volocanic ash"
Element[3][1]="Earth"
Element[3][2]="Rock"
Element[3][3]="Stone"
Element[3][4]="Sand"
Element[3][5]="Clay"
Element[3][6]="Metal"
Element[3][7]="Glass"
Element[3][8]="Gold"
Element[3][9]="Cave"
Element[3][10]="Mountain"
Element[4][1]="Water"
Element[4][2]="Mad"
Element[4][3]="Swamp"
Element[4][4]="Sea"
Element[4][5]="Beach"
Element[4][6]="Quicksilver"
Element[4][7]="Sweat"
Element[4][8]="Poison"
Element[4][9]="Waterfall"
Element[4][10]="Alcohol"
Element[5][1]="Energy"
Element[5][2]="Electricity"
Element[5][3]="Life"
Element[5][4]="Egg"
Element[5][5]="Seeds"
Element[5][6]="Void"
Element[5][6]="Sex"
Element[5][7]="Blood"
Element[5][8]="Magic"
UseGroup[1][1][1]=4
UseElement[1][1][1]=1
EqualGroup[1][1][1]=1
EqualEle[1][1][1]=3
UseGroup[1][1][2]=5
UseElement[1][1][2]=1
EqualGroup[1][1][2]=1
EqualEle[1][1][2]=4
UseGroup[1][1][3]=2
UseElement[1][1][3]=1
EqualGroup[1][1][3]=5
EqualEle[1][1][3]=1
UseGroup[1][1][4]=3
UseElement[1][1][4]=1
EqualGroup[1][1][4]=1
EqualEle[1][1][4]=5
UseGroup[1][1][5]=1
UseElement[1][1][5]=2
EqualGroup[1][1][5]=1
EqualEle[1][1][5]=7
UseGroup[1][1][6]=2
UseElement[1][1][6]=2
EqualGroup[1][1][6]=3
EqualEle[1][1][6]=2
UseGroup[1][1][7]=3
UseElement[1][1][7]=2
EqualGroup[1][1][7]=3
EqualEle[1][1][7]=3
UseGroup[1][1][8]=3
UseElement[1][1][8]=3
EqualGroup[1][1][8]=3
EqualEle[1][1][8]=4
UseGroup[1][2][1]=1
UseElement[1][2][1]=1
EqualGroup[1][2][1]=1
EqualEle[1][2][1]=7
UseGroup[1][5][1]=2
UseElement[1][5][1]=1
EqualGroup[1][5][1]=1
EqualEle[1][5][1]=6
UseGroup[2][1][1]=3
UseElement[2][1][1]=1
EqualGroup[2][1][1]=2
EqualEle[2][1][1]=2
UseGroup[2][1][2]=4
UseElement[2][1][2]=1
EqualGroup[2][1][2]=1
EqualEle[2][1][2]=2
UseGroup[2][1][3]=1
UseElement[2][1][3]=1
EqualGroup[2][1][3]=5
EqualEle[2][1][3]=1
UseGroup[2][1][4]=3
UseElement[2][1][4]=3
EqualGroup[2][1][4]=3
EqualEle[2][1][4]=6
IsMake()
GraphicsWindow.Width=640
GraphicsWindow.Height=480
GraphicsWindow.DrawLine(GraphicsWindow.Width/2,0,GraphicsWindow.Width/2,GraphicsWindow.Height)
GraphicsWindow.CanResize = "False"
x=0
Number = 1
AddGroup()

Sub AddGroup
y=0
Controls.ButtonClicked = AddElement
For i_a = 1 To Array.GetItemCount(Groups)
y=y+GraphicsWindow.Height/(Array.GetItemCount(Groups)+1)
If IsGroup[i_a] = 1 Then
GroupButton[i_a] = Controls.AddButton(Groups[i_a],x+80,y-20)
EndIf
EndFor
EndSub

Sub IsMake
For i_a = 1 To Array.GetItemCount(Groups)
IsGroup[i_a] = 0
For i_b = 1 To Array.GetItemCount(Element[i_a])
IsStartly=0
For i_c = 1 To Array.GetItemCount(StartMaked)
If StartMaked[i_c] = Text.Append(i_a,i_b) Then
IsStartly=1
EndIf
EndFor
IsElement[i_a][i_b]=IsStartly
If IsGroup[i_a] = 0 Then
IsGroup[i_a] = IsStartly
EndIf
EndFor
EndFor
EndSub

Sub AddElement
For i_a = 1 To Array.GetItemCount(Groups)
If Controls.LastClickedButton = GroupButton[i_a] Then
SelectGroup[Number] = i_a
EndIf
Controls.Remove(GroupButton[i_a])
EndFor
y=0
Controls.ButtonClicked = FinalCheck
Cancel = Controls.AddButton("Cancel",x,0)
For i_b = 1 To Array.GetItemCount(Element[SelectGroup[Number]])
y=y+GraphicsWindow.Height/(Array.GetItemCount(Element[SelectGroup[Number]])+1)
If IsElement[SelectGroup[Number]][i_b] = 1 Then
EleButton[i_b]=Controls.AddButton(Element[SelectGroup[Number]][i_b],x+80,y-20)
EndIf
EndFor
EndSub

Sub FinalCheck
If Controls.LastClickedButton = Cancel Then
Controls.Remove(Cancel)
For i_b = 1 To Array.GetItemCount(Element[SelectGroup[Number]])
Controls.Remove(EleButton[i_b])
EndFor
AddGroup()
Else
Controls.Remove(Cancel)
For i_b = 1 To Array.GetItemCount(Element[SelectGroup[Number]])
If Controls.LastClickedButton = EleButton[i_b] Then
SelectEle[Number] = i_b
EndIf
Controls.Remove(EleButton[i_b])
EndFor
FontSize = GraphicsWindow.FontSize
GraphicsWindow.FontSize = 40
MakeText[Number] = Shapes.AddText(Element[SelectGroup[Number]][SelectEle[Number]])
Shapes.Move(MakeText[Number],x+80,GraphicsWindow.Height/2-40)
GraphicsWindow.FontSize = FontSize
If Number=1 Then
x=GraphicsWindow.Width/2
Number=2
AddGroup()
Else
MakedGroup = 0
MakedElement = 0
For i_c = 1 To Array.GetItemCount(UseElement[SelectGroup[1]][SelectEle[1]])
If SelectGroup[2] = UseGroup[SelectGroup[1]][SelectEle[1]][i_c] And SelectEle[2] = UseElement[SelectGroup[1]][SelectEle[1]][i_c] Then
MakedGroup = EqualGroup[SelectGroup[1]][SelectEle[1]][i_c]
MakedElement = EqualEle[SelectGroup[1]][SelectEle[1]][i_c]
EndIf
EndFor
If IsElement[MakedGroup][MakedElement] = 0 Then
IsElement[MakedGroup][MakedElement] = 1
If IsGroup[MakedGroup] = 0 Then
IsGroup[MakedGroup] = 1
EndIf
EndIf
If MakedGroup <> 0 And MakedElement <> 0 Then
i_c = 1
Shapes.Animate(MakeText[i_c],GraphicsWindow.Width/2-Text.GetLength(Element[SelectGroup[i_c]][SelectEle[i_c]])*10,GraphicsWindow.Height/2-40,1000)
i_c = 2
Shapes.Animate(MakeText[i_c],GraphicsWindow.Width/2-Text.GetLength(Element[SelectGroup[i_c]][SelectEle[i_c]])*10,GraphicsWindow.Height/2-40,1000)
Program.Delay(1000)
Shapes.Remove(MakeText[1])
Shapes.Remove(MakeText[2])
GraphicsWindow.FontSize = 40
Total = Shapes.AddText(Element[MakedGroup][MakedElement])
Shapes.Move(Total,GraphicsWindow.Width/2-Text.GetLength(Element[MakedGroup][MakedElement])*10,GraphicsWindow.Height/2-40)
GraphicsWindow.FontSize = FontSize
Sound.PlayChimeAndWait()
Program.Delay(1000)
Shapes.Remove(Total)
x=0
Number = 1
AddGroup()
Else
Shapes.Remove(MakeText[1])
Shapes.Remove(MakeText[2])
x=0
Number = 1
AddGroup()
EndIf
EndIf
EndIf
EndSub