Microsoft Small Basic

Program Listing: HNR505
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"'Fire+Water
Element[1][3]="Gas"'Air+Water
Element[1][4]="Typhoon"'Air+Energy
Element[1][5]="Dust"'Air+Earth
Element[1][6]="Ash"'Dust+Fire
Element[1][7]="Cloud"'Air+Steam
Element[1][8]="Radio wave"'Electricity+Gas
Element[1][9]="Radiation"'Radio wave+Radio wave
Element[1][10]="Pollen"'Flower+Fertilizer
Element[2][1]="Fire"
Element[2][2]="Lava"'Fire+Earth
Element[2][3]="Plasma"'Fire+Electricity
Element[2][4]="Coal"'Wood+Fire
Element[2][5]="Oil"'Swamp+Coal
Element[2][6]="Sun"'Plasma+Void
Element[2][7]="Volocano"'Fire+Mountain
Element[2][8]="Volocanic ash"'Volocano+ash
Element[3][1]="Earth"
Element[3][2]="Rock"'Air+Lava
Element[3][3]="Stone"'Air+Rock
Element[3][4]="Sand"'Air+Stone
Element[3][5]="Clay"'Fire+Mad
Element[3][6]="Metal"'Stone+Fire
Element[3][7]="Glass"'Sand+Fire
Element[3][8]="Cave"'Earth+Stone
Element[3][9]="Mountain"'Cave+Earth
Element[3][10]="Gold"'Mountain+Tools
Element[4][1]="Water"
Element[4][2]="Mad"'Water+Earth
Element[4][3]="Swamp"'Mad+Water
Element[4][4]="Sea"'Water+Water
Element[4][5]="Beach"'Sand+Sea
Element[4][6]="Quicksilver"'Metal+Water
Element[4][7]="Sweat"'Human+Energy
Element[4][8]="Poison"'Snake+Weapon
Element[4][9]="Waterfall"'Mountain+Water
Element[4][10]="Alcohol"'Mold+Water
Element[5][1]="Energy"'Air+Fire
Element[5][2]="Electricity"'Metal+Energy
Element[5][3]="Life"'Swamp+Energy
Element[5][4]="Void"'Gas+Radio wave
Element[5][5]="Seeds"'Seaweed+Seaweed
Element[5][6]="Egg"'Bacteria+Clay
Element[5][7]="Blood"'Snake+Weapon,Bird+Hunter,Beast+Hunter,etc...
Element[5][8]="Magic"'Wizard+Energy
UseGroup[1][1][1]=4
UseElement[1][1][1]=1
EqualGroup[1][1][1]=1
EqualEle[1][1][1]=3'Air+Water=Gas
UseGroup[1][1][2]=5
UseElement[1][1][2]=1
EqualGroup[1][1][2]=1
EqualEle[1][1][2]=4'Air+Energy=Typhoon
UseGroup[1][1][3]=2
UseElement[1][1][3]=1
EqualGroup[1][1][3]=5
EqualEle[1][1][3]=1'Air+Fire=Energy
UseGroup[1][1][4]=3
UseElement[1][1][4]=1
EqualGroup[1][1][4]=1
EqualEle[1][1][4]=5'Air+Earth=Dust
UseGroup[1][1][5]=1
UseElement[1][1][5]=2
EqualGroup[1][1][5]=1
EqualEle[1][1][5]=7'Air+Steam=Cloud
UseGroup[1][1][6]=2
UseElement[1][1][6]=2
EqualGroup[1][1][6]=3
EqualEle[1][1][6]=2'Air+Lava=Rock
UseGroup[1][1][7]=3
UseElement[1][1][7]=2
EqualGroup[1][1][7]=3
EqualEle[1][1][7]=3'Air+Rock=Stone
UseGroup[1][1][8]=3
UseElement[1][1][8]=3
EqualGroup[1][1][8]=3
EqualEle[1][1][8]=4'Air+Stone=Sand
UseGroup[1][2][1]=1
UseElement[1][2][1]=1
EqualGroup[1][2][1]=1
EqualEle[1][2][1]=7'Steam+Air=Cloud
UseGroup[1][3][1]=5
UseElement[1][3][1]=2
EqualGroup[1][3][1]=1
EqualEle[1][3][1]=8'Gas+Electricity=Radio wave
UseGroup[1][3][2]=1
UseElement[1][3][2]=8
EqualGroup[1][3][2]=5
EqualEle[1][3][2]=4'Gas+Radio wave=Void
UseGroup[1][5][1]=2
UseElement[1][5][1]=1
EqualGroup[1][5][1]=1
EqualEle[1][5][1]=6'Dust+Fire=Ash
UseGroup[1][6][1]=3
UseElement[1][6][1]=7
EqualGroup[1][6][1]=3
EqualEle[1][6][1]=8'Ash+Volocano=Volocanic ash
UseGroup[1][8][1]=1
UseElement[1][8][1]=8
EqualGroup[1][8][1]=1
EqualEle[1][8][1]=9'Radio Wave+Radio wave=Radiation
UseGroup[2][1][1]=3
UseElement[2][1][1]=1
EqualGroup[2][1][1]=2
EqualEle[2][1][1]=2'Fire+Earth=Lava
UseGroup[2][1][2]=4
UseElement[2][1][2]=1
EqualGroup[2][1][2]=1
EqualEle[2][1][2]=2'Fire+Water=Steam
UseGroup[2][1][3]=1
UseElement[2][1][3]=1
EqualGroup[2][1][3]=5
EqualEle[2][1][3]=1'Fire+Air=Energy
UseGroup[2][1][4]=3
UseElement[2][1][4]=3
EqualGroup[2][1][4]=3
EqualEle[2][1][4]=6'Fire+Stone=Metal
UseGroup[2][1][5]=5
UseElement[2][1][5]=2
EqualGroup[2][1][5]=2
EqualEle[2][1][5]=3'Fire+Electricity=Plasma
UseGroup[2][1][6]=4
UseElement[2][1][6]=2
EqualGroup[2][1][6]=3
EqualEle[2][1][6]=5'Fire+Mad=Clay
UseGroup[2][1][6]=3
UseElement[2][1][6]=4
EqualGroup[2][1][6]=3
EqualEle[2][1][6]=7'Fire+Sand=Glass
UseGroup[2][2][1]=1
UseElement[2][2][1]=1
EqualGroup[2][2][1]=3
EqualEle[2][2][1]=2'Lava+Air=Rock
UseGroup[2][2][2]=3
UseElement[2][2][2]=9
EqualGroup[2][2][2]=2
EqualEle[2][2][2]=7'Lava+Mountain=Volocano
UseGroup[3][1][1]=1
UseElement[3][1][1]=1
EqualGroup[3][1][1]=1
EqualEle[3][1][1]=5'Earth+Air=Dust
UseGroup[3][1][2]=4
UseElement[3][1][2]=1
EqualGroup[3][1][2]=4
EqualEle[3][1][2]=2'Earth+Water=Mad
UseGroup[3][1][3]=2
UseElement[3][1][3]=1
EqualGroup[3][1][3]=2
EqualEle[3][1][3]=2'Earth+Fire=Lava
UseGroup[3][1][4]=3
UseElement[3][1][4]=2
EqualGroup[3][1][4]=3
EqualEle[3][1][4]=8'Earth+Rock=Cave
UseGroup[3][1][5]=3
UseElement[3][1][5]=8
EqualGroup[3][1][5]=3
EqualEle[3][1][5]=9'Earth+Cave=Mountain
UseGroup[3][6][1]=5
UseElement[3][6][1]=1
EqualGroup[3][6][1]=5
EqualEle[3][6][1]=2'Metal+Energy=Electricity
UseGroup[3][6][2]=4
UseElement[3][6][2]=1
EqualGroup[3][6][2]=4
EqualEle[3][6][2]=6'Metal+Water=Quicksilver
UseGroup[4][1][1]=4
UseElement[4][1][1]=2
EqualGroup[4][1][1]=4
EqualEle[4][1][1]=3'Water+Mad=Swamp
UseGroup[4][1][2]=4
UseElement[4][1][2]=1
EqualGroup[4][1][2]=4
EqualEle[4][1][2]=4'Water+Water=Sea
UseGroup[4][1][3]=2
UseElement[4][1][3]=1
EqualGroup[4][1][3]=1
EqualEle[4][1][3]=2'Water+Fire=Steam
UseGroup[4][2][1]=4
UseElement[4][2][1]=1
EqualGroup[4][2][1]=4
EqualEle[4][2][1]=3'Mad+Water=Swamp
UseGroup[4][2][2]=2
UseElement[4][2][2]=1
EqualGroup[4][2][2]=3
EqualEle[4][2][2]=5'Mad+Fire=Clay
UseGroup[4][3][1]=5
UseElement[4][3][1]=1
EqualGroup[4][3][1]=5
EqualEle[4][3][1]=3'Swamp+Energy=Life
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