Microsoft Small Basic

Program Listing: PPQ825
Elementype[1]="HP"'Elementypeじゃなくてhighstatus。
Extra[1]=30'ボーナス量
Losestatus[1]="DMG"'不得意なステータス
low[1]=10'不得意なステータスが減る量
Elementype[2]="DMG"
Extra[2]=10
Losestatus[2]="DEF"
low[2]=6
Elementype[3]="MP"
Extra[3]=5
Losestatus[3]="HP"
low[3]=20
Elementype[4]="DEF"
Extra[4]=6
Losestatus[4]="HEAL"
low[4]=3
Elementype[5]="HEAL"
Extra[5]=3
Losestatus[5]="MP"
low[5]=6
Status["HP"]=100'Elementypeで得意ステータスの名前にしちゃったからこの方がわかりやすい
Status["DMG"]=25'デフォルトステータス
Status["MP"]=15
Status["DEF"]=10
Status["HEAL"]=6
enemys[1][1]="スライム"'配列の数値の一番目は開放する条件(フラグ)、二番目は同じ条件を持つ中での番号
unlock[1][1]=2'対応するものを倒したときに立てるフラグ
enestatus[1][1]["HP"]=35
enestatus[1][1]["DMG"]=8
enestatus[1][1]["MP"]=0
enestatus[1][1]["DEF"]=5
enestatus[1][1]["HEAL"]=0
enemys[1][2]="ウサギ"
unlock[1][2]=3
enestatus[1][2]["HP"]=40
enestatus[1][2]["DMG"]=15
enestatus[1][2]["MP"]=5
enestatus[1][2]["DEF"]=8
enestatus[1][2]["HEAL"]=2
enemys[2][1]="狼"
enestatus[2][1]["HP"]=50
enestatus[2][1]["DMG"]=25
enestatus[2][1]["MP"]=5
enestatus[2][1]["DEF"]=10
enestatus[2][1]["HEAL"]=5
unlock[2][1]=4
enemys[3][1]="熊"
unlock[3][1]=4
enestatus[3][1]["HP"]=60
enestatus[3][1]["DMG"]=40
enestatus[3][1]["MP"]=10
enestatus[3][1]["DEF"]=15
enestatus[3][1]["HEAL"]=5
enemys[4][1]="トラ"
unlock[4][1]=4
enestatus[4][1]["HP"]=75
enestatus[4][1]["DMG"]=60
enestatus[4][1]["MP"]=15
enestatus[4][1]["DEF"]=22
enestatus[4][1]["HEAL"]=7
enemys[4][2]="毒蛇"
unlock[4][2]=5
enestatus[4][2]["HP"]=75
enestatus[4][2]["DMG"]=70
enestatus[4][2]["MP"]=5
enestatus[4][2]["DEF"]=15
enestatus[4][2]["HEAL"]=3
enemys[5][1]="八岐大蛇"
unlock[5][1]=5
enestatus[5][1]["HP"]=100
enestatus[5][1]["DMG"]=100
enestatus[5][1]["MP"]=10
enestatus[5][1]["DEF"]=20
enestatus[5][1]["HEAL"]=4
unlock_list[1]=1
TextWindow.WriteLine("得意ステータスを選んでください")
TextWindow.WriteLine("1.HP")
TextWindow.WriteLine("2.攻撃力")
TextWindow.WriteLine("3.魔力")
TextWindow.WriteLine("4.防御")
TextWindow.WriteLine("(その他).回復力")
Your_element=TextWindow.ReadNumber()'Your_elementじゃなくてYour_statusの方が近い
Set_status()'当てはまらない数値なら回復力に直してステータス変動
TextWindow.WriteLine("初期ステータス")
For count=1 To Array.GetItemCount(Status)'ステータス表示
change=Elementype[count]
TextWindow.WriteLine(change+":"+Status[change])
EndFor
Program.Delay(3000)'これないとステータスが見れない
TextWindow.Clear()
TextWindow.WriteLine("戦う相手を選んでください")
Write_enemys()
TextWindow.CursorTop=4
TextWindow.Write("あなたのステータス")
Length[0]=TextWindow.CursorLeft
TextWindow.WriteLine("")
For count=1 To Array.GetItemCount(Status)
change=Elementype[count]
data[change]=Status[change]
Length[count]=Text.GetLength(change+":"+data[change])
TextWindow.WriteLine(change+":"+data[change])
EndFor
TextWindow.CursorTop=4
CursorLeft = Length[0]+4
TextWindow.CursorLeft=CursorLeft
TextWindow.WriteLine(enemys[Shortcut_key_A[Getnumber]][Shortcut_key_B[Getnumber]]+"のステータス")
For count=1 To Array.GetItemCount(Status)
change=Elementype[count]
enemydata[change]=enestatus[Shortcut_key_A[Getnumber]][Shortcut_key_B[Getnumber]][change]
TextWindow.CursorLeft=CursorLeft
TextWindow.WriteLine(change+":"+enemydata[change])
EndFor

Sub Set_status
If Your_element<1 Or Your_element>4 Or Math.Remainder(Your_element,1)<>0 Then
Your_element=Array.GetItemCount(Elementype)
EndIf
change=Elementype[Your_element]
Status[change]=Status[change]+Extra[Your_element]
change=Losestatus[Your_element]
Status[change]=Status[change]-low[Your_element]
EndSub

Sub Write_enemys
i=0
For a=1 To Array.GetItemCount(enemys)
For b=1 To Array.GetItemCount(enemys[a])
If Array.ContainsValue(unlock_list,a) Then
i=i+1
Shortcut_key_A[i]=a'この敵の条件フラグ
Shortcut_key_B[i]=b'同じ条件の中での順番
TextWindow.WriteLine(i+"."+enemys[a][b])
EndIf
EndFor
EndFor
Getnumber=TextWindow.ReadNumber()
While i Getnumber=TextWindow.ReadNumber()
EndWhile
AddText="VS."+enemys[Shortcut_key_A[Getnumber]][Shortcut_key_B[Getnumber]]'あえて一気に表示させない
For i=Text.GetLength(AddText) To 1 Step -1'AddTextの文を下から1文字ずつ表示していく
TextWindow.Clear()
TextWindow.Write(Text.GetSubTextToEnd(AddText,i))
Program.Delay(100)'これがないと一気に表示してしまう
EndFor
Program.Delay(2000)
TextWindow.Clear()
EndSub